JavaFX - 通过按钮编辑树视图节点文本
JavaFX - Edit tree view node text by button
我有一个带有树视图的表单,我想通过按一个按钮来更改所选项目的文本。我找不到如何通过按下按钮来实现这一点。我找到了如何通过双击一个单元格来执行此操作,但我无法通过按钮理解。也许有人知道如何实现这个或摆脱 link。
我将不胜感激
只需使用选择模型获取选定的 TreeItem
并将其更改为 value
属性。
例子
@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();
}
我有一个带有树视图的表单,我想通过按一个按钮来更改所选项目的文本。我找不到如何通过按下按钮来实现这一点。我找到了如何通过双击一个单元格来执行此操作,但我无法通过按钮理解。也许有人知道如何实现这个或摆脱 link。
我将不胜感激
只需使用选择模型获取选定的 TreeItem
并将其更改为 value
属性。
例子
@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();
}