0
您好我正在处理与javafx中的treeView相关的应用程序,我在[1]之前问过这个问题:JavaFx: How to Use existing branch with leafs as a newly add branch,但没有得到任何答案。我试图自己,并到达这里JavaFx:使用现有的分支作为新添加的分支
public class Main extends Application
{
private static TreeItem<String> item2;
@SuppressWarnings("unchecked")
@Override
public void start(Stage primaryStage)
{
BorderPane border = new BorderPane();
Scene scene = new Scene(border,300,300);
primaryStage.setTitle("BorderPane");
primaryStage.setScene(scene);
primaryStage.show();
TreeItem<String> tree = new TreeItem<String>("Root");
item2 = new TreeItem<String>("poles");
TreeItem<String> item2Child1 = new TreeItem<String>("X");
TreeItem<String> item2Child2 = new TreeItem<String>("Y");
item2.getChildren().addAll(item2Child1,item2Child2);
//item2.setExpanded(true);
tree.setExpanded(true);
tree.getChildren().addAll(item2);
TreeView<String> treeView = new TreeView<String>(tree);
treeView.setCellFactory(new Callback<TreeView<String>,TreeCell<String>>(){
@Override
public TreeCell<String> call(TreeView<String> p) {
return new AddMenuTreeCell();
}
});
border.setCenter(treeView);
}
private static class AddMenuTreeCell extends TextFieldTreeCell<String> {
private ContextMenu menu = new ContextMenu();
private TextField textField;
public AddMenuTreeCell() {
MenuItem item1 = new MenuItem("Insert poles");
menu.getItems().add(item1);
item1.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent arg0) {
getTreeItem().getChildren().add(item2);
}
});
}
@Override
public void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
if (empty) {
setText(null);
setGraphic(null);
} else {
if (isEditing()) {
if (textField != null) {
textField.setText(getString());
}
setText(null);
setGraphic(textField);
} else {
setText(getString());
setGraphic(getTreeItem().getGraphic());
if (!(getTreeItem().isLeaf() && getTreeItem().getParent() == null)){
setContextMenu(menu);
}
}
}
}
private String getString() {
return getItem() == null ? "" : getItem().toString();
}
}
}
与此用户可以添加现有的分支“杆”。但问题是,用户无法在任何极点分支中添加Poles。
[应用工作这样的用户必须使用现有的分支“极点”作为新加入的分支,并可以添加尽可能多极,因为他想要的任何分支内。]
什么好主意会有所帮助请。
谢谢
什么是条件'if(!(空&& getTreeItem()。getParent()== null))'应该是?如果'empty'为true,那么'getTreeItem()。getParent()'会抛出一个空指针异常。而且,你已经将“else”块封装为“if(empty)”,所以你知道'empty'是错误的......你在那里意味着什么? –
@James_D这是要获得右击滚动“添加极点”超过根和分支(极点)。 – Mudasir
那显然不是它所做的,但?你能解决这个逻辑吗?我不明白你为什么需要一个“if”。 –