我想制作'文件夹'我的JavaFX中的节点TreeView
可扩展且可折叠,但无法选择。
我找到了this discussion并查看了EventFilter
,但似乎没有任何EventType
与TreeView
选择更改相对应。第二个建议,一个自定义选择模型,听起来像是深深地倾向于我。那么,我是不是会让选择事件触发我的听众,然后在那里排序?
答案 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);
这将确保仅根据需要选择叶节点。