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

时间:2015-03-12 00:00:54

标签: javafx treeview

我想制作'文件夹'我的JavaFX中的节点TreeView可扩展且可折叠,但无法选择

我找到了this discussion并查看了EventFilter,但似乎没有任何EventTypeTreeView选择更改相对应。第二个建议,一个自定义选择模型,听起来像是深深地倾向于我。那么,我是不是会让选择事件触发我的听众,然后在那里排序?

2 个答案:

答案 0 :(得分:3)

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

Keystore file does not exist: C:\wamp\www\towncrier\platforms\android\..\..\phistoKey.keystore

对我而言,只需在单击非叶节点时清除选择即可。但是,重新选择table.getSelectionModel().selectedItemProperty().addListener((c, oldValue, newValue) -> { if (newValue != null && !newValue.isLeaf()) { Platform.runLater(() -> table.getSelectionModel().clearSelection()); } }); 参数并不困难,但请注意,这会再次触发更改事件(oldValue调用也是如此,这就是为什么clearSelection检查是必要的。)

答案 1 :(得分:0)

这里有一个类似的问题:

TreeView - Certain TreeItems are not allowed to be selected

如果您使用我在此处发布的answer中的FilteredTreeViewSelectionModel,则可以通过创建自定义TreeItemSelectionFilter并按如下所示进行连接来获得所需的行为:

MultipleSelectionModel<TreeItem<Object>> selectionModel = tree.getSelectionModel();
TreeItemSelectionFilter<Object> filter = TreeItem::isLeaf;
FilteredTreeViewSelectionModel<Object> filteredSelectionModel = new 
FilteredTreeViewSelectionModel<>(tree, selectionModel, filter);
tree.setSelectionModel(filteredSelectionModel);

这将确保仅根据需要选择叶节点。