4

我正在尝试为 ControlsFX 的 GridView 实现 MultipleSelectionModel。研究互联网时,Jonathan Giles 提到向每个 GridCell 添加侦听器是个坏主意。这让我想知道如何通知选择模型,例如选择、取消选择等。在阅读之前,我认为 GridCell 中使用的节点将消耗鼠标/触摸/键事件并相应地使用 GridCells 的updateSelected方法。我的问题是这种更新是否传播到任何侦听器/模型,或者我是否必须手动绑定它(某处),我目前不知道该怎么做。

此外,选择模型使用只读的可观察列表,这带来了另一个问题,即如何将 GridView 的数据(即项目列表)绑定到选择模型的列表,我假设这是模型用于其流程的内容。

我可能完全可以绕过使用选择模型,并在 Cell/Node 级别拦截输入事件,并在使用支持 ObservableList 或 2 的同时在 Cell 的 updateItem 方法上进行突出显示等操作,以跟踪所有内容并相应地刷新,但这不是最好的方法,更不用说好的方法了。GridView 的选择模型应该是唯一的方法,这就是我在这里的原因。

4

1 回答 1

3

您不一定必须使用 MultiSelectionModel 或 JavaFX 带来的任何东西。使用 Set 或 List 来存储您选择的节点就足够了。

这是一个关于如何在 javafx 中使用 ctrl 键选择多个 Canvas 组件的示例?我的回答。我想它可以满足您的需求。如果没有,请具体说明您需要什么。

于 2015-04-19T23:19:22.123 回答