ListProperty<T> 与 ObjectProperty<ObservableList<T>>
ListProperty<T> vs. ObjectProperty<ObservableList<T>>
我注意到 ListView
中的 itemsProperty 是 ObjectProperty<ObservableList<T>>
类型,但我本以为 ListProperty<T>
.
现在我想知道:我应该什么时候使用 ObjectProperty<ObservableList<T>>
,什么时候使用 ListProperty<T>
?
答案可以在 ObjectProperty 的 JavaFX 文档中找到,特别是这一行:
For specialized implementations for ObservableList, ObservableSet and ObservableMap that also report changes inside the collections, see ListProperty, SetProperty and MapProperty, respectively.
因此,如果 ObservableList
本身发生变化,使用 ObjectProperty<ObservableList<T>>
将报告,但如果 中 ObservableList
的任何成员发生变化则不会。
因此,为了回答您的问题,当您仅在 ObservableList
已更改(即:添加或删除的项目)时才需要报告时,您可以使用 ObjectProperty<ObservableList<T>>
。如果您还需要跟踪对 ObservableList
中的实际项目所做的更改,则应使用 ListProperty<T>
。
我注意到 ListView
中的 itemsProperty 是 ObjectProperty<ObservableList<T>>
类型,但我本以为 ListProperty<T>
.
现在我想知道:我应该什么时候使用 ObjectProperty<ObservableList<T>>
,什么时候使用 ListProperty<T>
?
答案可以在 ObjectProperty 的 JavaFX 文档中找到,特别是这一行:
For specialized implementations for ObservableList, ObservableSet and ObservableMap that also report changes inside the collections, see ListProperty, SetProperty and MapProperty, respectively.
因此,如果 ObservableList
本身发生变化,使用 ObjectProperty<ObservableList<T>>
将报告,但如果 中 ObservableList
的任何成员发生变化则不会。
因此,为了回答您的问题,当您仅在 ObservableList
已更改(即:添加或删除的项目)时才需要报告时,您可以使用 ObjectProperty<ObservableList<T>>
。如果您还需要跟踪对 ObservableList
中的实际项目所做的更改,则应使用 ListProperty<T>
。