gpt4 book ai didi

tabs - 如何在 JavaFX 2 中双击重命名选项卡的文本?

转载 作者:行者123 更新时间:2023-12-04 21:18:31 26 4
gpt4 key购买 nike

我有一个简单的代码可以将选项卡添加到 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);

}

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

最佳答案

这是我的问题的解决方案:

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 ;
}

}

关于tabs - 如何在 JavaFX 2 中双击重命名选项卡的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17170305/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com