如何使某些 JavaFX TreeView 节点不可选择?

dav*_*les 5 treeview javafx

我想让 JavaFX 中的“文件夹”节点TreeView可扩展和可折叠,但不可选择

我找到了此讨论并进行了研究EventFilter,但似乎没有任何EventTypeTreeView选择更改相对应的内容。第二个建议是自定义选择模型,对我来说听起来像是一个深入的研究。那么,我是否卡住了允许选择事件触发我的侦听器,然后对那里的垃圾进行排序?

Gro*_*hni 4

这有点hacky,但我最终是这样做的:

table.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
    if (newValue != null && !newValue.isLeaf()) {
        Platform.runLater(() -> table.getSelectionModel().clearSelection());
    }
});
Run Code Online (Sandbox Code Playgroud)

对我来说,单击非叶节点时清除选择就足够了。然而,重新选择参数应该不难oldValue,但要注意这将再次触发更改事件(调用也是如此clearSelection,这就是为什么newValue != null需要检查)。