【发布时间】:2013-11-14 13:58:06
【问题描述】:
下面是一段简单的 JavaFX 代码来说明我的问题。
List list1 = new ArrayList();
list1.add("foo");
...
someListView = new ListView<>();
ObservableList someObservableList = FXCollections.observableList(list1);
someListView.setItems(someObservableList);
...
someObservableList.add("bar");
如果我理解正确的话,在调用setItems方法之后,不仅列表的内容会显示在ListView Gui组件中,而且如果之后在ObservableList实例中添加项目,@ 987654325@会自动刷新并自动显示新添加的项目,无需调用任何额外的add或refresh方法。
到目前为止,一切都很好。但是如果我在原始列表中添加一些东西(即list1)怎么办。这些更改不会自动传播。这很有意义,但有时很不方便。
当然,在经典的 Java 应用程序中,应用程序的模型不包含 ObservableCollection 实例。因此,无论何时向模型添加内容,都必须更新从原始列表派生的 ObservableLists 实例。显然这是不可避免的,对吧?
这让我想知道,在 Model 类中修改 Collection 类型出现(例如 List、Collection、Set、Iterable...)并将它们替换为从现在开始他们的ObservableCollection 替代品?
到目前为止,我一直认为这些ObservableCollection 类应该只用于应用程序的 Gui 层,但在任何地方使用它们似乎都很方便。
【问题讨论】:
标签: java model-view-controller collections javafx-2 javafx