gpt4 book ai didi

Javafx Treeview 项目操作事件

转载 作者:搜寻专家 更新时间:2023-11-01 01:00:30 25 4
gpt4 key购买 nike

我正在尝试使用 treeView 创建菜单。这是我第一次使用 treeView 并且已经在几个网站上阅读了它。

涉及到 Action 事件时,我遇到了一些问题。我想要做的基本上是在用户单击 TreeView 中的节点时触发和事件到目前为止我有以下内容:

        TreeItem<String> rootItem = new TreeItem<String>("Navigation");
TreeItem<String> statistics = new TreeItem<String>("Statistics");
TreeItem<String> clan = new TreeItem<String>("Clan page");
clan.addEventHandler(MouseEvent, new EventHandler<MouseEvent>() {

@Override
public void handle(MouseEvent event) {
// TODO Auto-generated method stub

}
});

rootItem.getChildren().add(statistics);
rootItem.getChildren().add(clan);

TreeView<String> tree = new TreeView<String>(rootItem);

很遗憾,这似乎不起作用。

有什么方法可以在不更改 的情况下将 clicklistener 甚至 actionlistener 添加到我的 treeView 中的各个项目treeItems 以键入 Button ?

最佳答案

这可以通过实现 CellFactory 来解决,但我认为最简单的方法是这样的:

1) 创建事件处理程序并将其添加到 TreeView:

EventHandler<MouseEvent> mouseEventHandle = (MouseEvent event) -> {
handleMouseClicked(event);
};

treeView.addEventHandler(MouseEvent.MOUSE_CLICKED, mouseEventHandle);

2) 只处理节点上的点击(而不是 TreeView 的空白空间):

private void handleMouseClicked(MouseEvent event) {
Node node = event.getPickResult().getIntersectedNode();
// Accept clicks only on node cells, and not on empty spaces of the TreeView
if (node instanceof Text || (node instanceof TreeCell && ((TreeCell) node).getText() != null)) {
String name = (String) ((TreeItem)treeView.getSelectionModel().getSelectedItem()).getValue();
System.out.println("Node click: " + name);
}
}

关于Javafx Treeview 项目操作事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15792090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com