如何在JavaFX 2中双击重命名选项卡的文本? [英] How to rename tab's text on double click in JavaFX 2?

查看:93
本文介绍了如何在JavaFX 2中双击重命名选项卡的文本?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个简单的代码即可将标签添加到tabPane

I have a simple code to add tab(s) to a tabPane

@FXML
private void addNewWorkspaceTab(ActionEvent event) {

    Tab workspaceTab = new Tab();
    workspaceTab.setText("New Workspace");
    tabpaneWorkspace.getTabs().addAll(workspaceTab);
    tabpaneWorkspace.setTabClosingPolicy(TabPane.TabClosingPolicy.SELECTED_TAB);

}

通过鼠标左键单击一个选项卡,我想重命名(通过输入新文本)所选选项卡:我该怎么做?

By double left mouse click on a tab I would like to rename (by typing a new text) the selected tab: how can I do this?

推荐答案

以下是我的问题的解决方案:

Here is a solution for my question:

import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.control.Label;
import javafx.scene.control.Tab;
import javafx.scene.control.TextField;
import javafx.scene.input.MouseEvent;

/**
*
* @author utente
*/
public class TabSetText {

public Tab createEditableTab(String text) {  
final Label label = new Label(text);  
final Tab tab = new Tab();  
tab.setGraphic(label);  
final TextField textField = new TextField();  
label.setOnMouseClicked(new EventHandler<MouseEvent>() {  
  @Override  
  public void handle(MouseEvent event) {  
    if (event.getClickCount()==2) {  
      textField.setText(label.getText());  
      tab.setGraphic(textField);  
      textField.selectAll();  
      textField.requestFocus();  
    }  
  }  
}); 


textField.setOnAction(new EventHandler<ActionEvent>() {  
  @Override  
  public void handle(ActionEvent event) {  
    label.setText(textField.getText());  
    tab.setGraphic(label);  
  }  
});


textField.focusedProperty().addListener(new ChangeListener<Boolean>() {  
  @Override  
  public void changed(ObservableValue<? extends Boolean> observable,  
      Boolean oldValue, Boolean newValue) {  
    if (! newValue) {  
      label.setText(textField.getText());  
      tab.setGraphic(label);            
    }  
  }  
});  
return tab ;  
}  

}

这篇关于如何在JavaFX 2中双击重命名选项卡的文本?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆