编辑#2:因为它看起来像一个bug我已经在javaFx-jira中发布了一个错误报告.您必须拥有一个帐户才能访问该问题.如果有新信息,我会保持这篇文章是最新的.
原帖: 我有一个带按钮和TreeView的简单UI.如果按下按钮,则应该在TreeView中添加一个新项目.该项目一出现在树中就应该可以编辑.
import javafx.fxml.FXML;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.control.cell.TextFieldTreeCell;
import javafx.util.converter.DefaultStringConverter;
public class ClientController {
@FXML
private TreeView<String> tree;
public void initialize() {
tree.setEditable(true);
tree.setCellFactory(p -> new TextFieldTreeCell<>(new DefaultStringConverter()));
TreeItem<String> root = new TreeItem<>();
root.setValue("Items");
root.setExpanded(true);
tree.setRoot(root);
}
@FXML
public void createItem() {
TreeItem<String> newItem = new TreeItem<>();
newItem.setValue("Item " + tree.getExpandedItemCount());
tree.getRoot().getChildren().add(newItem);
tree.requestFocus();
tree.getSelectionModel().select(newItem);
tree.edit(newItem);
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用的CellFactory是JavaFX api的一部分.
如果我查看api文档(TreeView#edit),我的网站上没什么可做的.
我通过谷歌找到类似的例子很多这样为每个TreeItem上下文菜单.有用,但不完全是我想要的,现在.
如果我选择/双击UI中的项目,我可以编辑任何以前创建的和现有的TreeItem.我错过了什么吗?
编辑#1:
如果createItem方法更改为以下代码:
@FXML
public void createItem() …Run Code Online (Sandbox Code Playgroud)