我正在制作一个Javafx应用程序,我有一个List<String>
,我不断更新,我希望它与我在屏幕上的ListView同步,而不需要每次都手动更新它。就像通过引用绑定ListView一样。这可能吗?如果是这样我该怎么办?谢谢。
根据您提出的问题和评论,您正在尝试执行以下操作:
ObservableList<E> list = ...;
ListView<E> view = ...;
view.itemsProperty().bind(list);
这不起作用,因为bind
期望ObservableValue
和ObservableList
不扩展该接口。您不需要绑定items
属性。无论ObservableList
属于items
属性,ListView
都会观察到更改(即添加,删除,排列和更新1)。这意味着你应该做的事情如下:
ObservableList<E> list = ...;
ListView<E> view = ...;
view.setItems(list);
然后对list
的修改将反映在ListView
中。
如果你需要绑定items
属性,那么你的ObservableList
将需要保存在ObservableValue<ObservableList<E>>
或ObservableListValue<E>
的实现中。
我建议阅读更多有关JavaFX基础知识的内容;例如tutorial或ListView
上的documentation。
1.当元素的属性失效时,将触发更新更改事件。为了使ObservableList
能够观察其元素的属性,从而能够触发更新事件,必须使用FXCollections.observableArrayList(Callback)
创建它。