JAVAFX树形视图与不同的上下文菜单

3
我想为树视图中的树项创建上下文菜单。我想为每个树项显示不同的上下文菜单。如何实现?
例如,我想为Acc Dept创建“添加员工”,为IT支持创建“添加支持者”。
根据树项名称显示上下文菜单。

1
使用自定义的树单元格并在单元格上设置上下文菜单。我有一篇关于为TableView做类似事情的博客文章:看看它是否有帮助。 - James_D
@James_D 很酷的想法,特别是合并菜单项 :-) 没想到将一个菜单项添加到多个菜单中会起作用。重新父级似乎发生在显示时而不是添加时? - kleopatra
MenuItem 不是 Node,因此您不会将相同的 Node 添加到场景图中的多个位置。它们的行为有点像 ListViewTableView 中的项目(除了没有菜单单元格 API),您可以轻松地将相同的项目添加到多个 ListView 中。 - James_D
有趣的问题。我认为它很可能是安全的,因为上下文菜单实际上在它自己的窗口中,并且您无法同时显示多个上下文菜单。但是请继续尝试... - James_D
@James_D 完成:将标签作为图形添加到 addMenuItem 中 - 最初出现在表格的上下文菜单中,然后出现在行菜单中...但是然后它被从表格中移除了。 - kleopatra
显示剩余4条评论
1个回答

2
 public TreeModel() {
        MenuItem addMenuItem = new MenuItem("Create Tab");
        addMenu.getItems().add(addMenuItem);

        addMenuItem.setOnAction(new EventHandler() {
            @Override
            public void handle(Event t) {
                TreeItem newEmployee = 
                    new TreeItem<>("New Tab");
                        getTreeItem().getChildren().add(newEmployee);
            }
        });

        contextMenuProperty().bind(
  Bindings.when(Bindings.equal(itemProperty(),"TABS"))
  .then(addMenu)
  .otherwise((ContextMenu)null));



    }

这个有效。@James非常感谢你的优秀文章 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接