JavaFX-按按钮编辑树视图节点文本

JavaFX-按按钮编辑树视图节点文本,java,javafx,treeview,scenebuilder,treeviewitem,Java,Javafx,Treeview,Scenebuilder,Treeviewitem,我有一个带有树状视图的表单,我想通过按下按钮来更改所选项目的文本。我找不到如何通过按下按钮来实现这一点。我通过双击一个单元格找到了如何做到这一点,但我无法通过按钮理解。也许有人知道如何实现这一点,或者放弃链接 我将非常感激。只需使用选择模型获取所选的TreeItem,并更改其值属性即可 例子 @覆盖 公共无效开始(阶段primaryStage)引发IOException{ TreeView TreeView=新的TreeView(); //创建数据 TreeItem root=新的TreeIte

我有一个带有树状视图的表单,我想通过按下按钮来更改所选项目的文本。我找不到如何通过按下按钮来实现这一点。我通过双击一个单元格找到了如何做到这一点,但我无法通过按钮理解。也许有人知道如何实现这一点,或者放弃链接


我将非常感激。

只需使用选择模型获取所选的
TreeItem
,并更改其
属性即可

例子
@覆盖
公共无效开始(阶段primaryStage)引发IOException{
TreeView TreeView=新的TreeView();
//创建数据
TreeItem root=新的TreeItem(“根”);
TreeItem child1=新的TreeItem(“child1”);
TreeItem child2=新的TreeItem(“child2”);
root.getChildren().addAll(child1,child2);
child1.getChildren().addAll(
新树项目(“儿童1-1”),
新树项目(“儿童1-2”);
child2.getChildren().addAll(
新树项目(“儿童2-1”),
新树项目(“儿童2-2”);
树丛根(根);
按钮按钮=新按钮(“更改”);
button.disableProperty().bind(treeView.getSelectionModel().SelectEditeProperty().isNull());
TextField TextField=新的TextField();
按钮设置操作(evt->{
//将所选项目的文本设置为文本字段文本
TreeItem=treeView.getSelectionModel().getSelectedItem();
String text=textField.getText();
项目.设置值(文本);
});
场景=新场景(新VBox(树视图、文本字段、按钮));
初级阶段。场景(场景);
primaryStage.show();
}

只需使用选择模型获取所选的
树项
,并更改其
属性即可

例子
@覆盖
公共无效开始(阶段primaryStage)引发IOException{
TreeView TreeView=新的TreeView();
//创建数据
TreeItem root=新的TreeItem(“根”);
TreeItem child1=新的TreeItem(“child1”);
TreeItem child2=新的TreeItem(“child2”);
root.getChildren().addAll(child1,child2);
child1.getChildren().addAll(
新树项目(“儿童1-1”),
新树项目(“儿童1-2”);
child2.getChildren().addAll(
新树项目(“儿童2-1”),
新树项目(“儿童2-2”);
树丛根(根);
按钮按钮=新按钮(“更改”);
button.disableProperty().bind(treeView.getSelectionModel().SelectEditeProperty().isNull());
TextField TextField=新的TextField();
按钮设置操作(evt->{
//将所选项目的文本设置为文本字段文本
TreeItem=treeView.getSelectionModel().getSelectedItem();
String text=textField.getText();
项目.设置值(文本);
});
场景=新场景(新VBox(树视图、文本字段、按钮));
初级阶段。场景(场景);
primaryStage.show();
}

TreeView之外的按钮或是单元格的一部分的按钮?@fabian按钮不是单元格的一部分。TreeView之外的按钮或是单元格的一部分的按钮?@fabian按钮不是单元格的一部分。
@Override
public void start(Stage primaryStage) throws IOException {
    TreeView<String> treeView = new TreeView<>();
    
    // create data
    TreeItem<String> root = new TreeItem<>("root");
    
    TreeItem<String> child1 = new TreeItem<>("child1");
    TreeItem<String> child2 = new TreeItem<>("child2");
    root.getChildren().addAll(child1, child2);
    
    child1.getChildren().addAll(
            new TreeItem<>("child1-1"),
            new TreeItem<>("child1-2"));
    
    child2.getChildren().addAll(
            new TreeItem<>("child2-1"),
            new TreeItem<>("child2-2"));
    
    treeView.setRoot(root);
    
    Button button = new Button("Change");
    button.disableProperty().bind(treeView.getSelectionModel().selectedItemProperty().isNull());
    TextField textField = new TextField();
    
    button.setOnAction(evt -> {
        // set text of selected item to TextField text
        TreeItem<String> item = treeView.getSelectionModel().getSelectedItem();
        String text = textField.getText();
        item.setValue(text);
    });

    Scene scene = new Scene(new VBox(treeView, textField, button));
    
    primaryStage.setScene(scene);
    primaryStage.show();
}