如何通过JavaFX的TableView

时间:2017-01-23 15:24:14

标签: java javafx javafx-8 observablecollection

最近,我一直在考虑通过JavaFX的ObservableMap显示TableView的最佳方式。

final ObservableList<Entry<K, V>> observableList = FXCollections.observableArrayList(observableMap.entrySet());
tableView.setItems(observableList);

这显然无法解决问题,因为observableMap的更改未反映在TableView中,因为ObservableMap#entrySet()不可观察,也不会对{{1}进行编辑始终到达TableView因为observableMap只是observableList,其中包含来自ObservableList的所有条目,但它不受其支持。

我想到有两种可能的解决方案可以提供此功能。

  1. 采用observableMap并返回ObservableMap的静态实用程序方法。为了使它们保持同步,将监听器添加到地图和列表中,它们会自动将其中任何一个中所做的更改应用到另一个。

  2. 创建一个实现ObservableList接口的新类型MapBackedObservableList。构造时,ObservableList存储为属性,所有更改/请求都会转发给它。

  3. 实现ObservableMap似乎需要做很多工作,尤其是在考虑所有其他必须实现的方法时。

    你会如何解决这个问题?这不是我第一次尝试找到一种方便的方式来动态显示ObservableList中的地图而且我确信我不是唯一有这个问题的人,所以我想最后写了一段代码来处理它。

0 个答案:

没有答案