ListProperty<T> 与 ObjectProperty<ObservableList<T>>

Han*_*nes 4 java javafx

我注意到itemsProperty inListView的类型是ObjectProperty<ObservableList<T>>,但我早就预料到了ListProperty<T>

现在我想知道:我应该什么时候使用ObjectProperty<ObservableList<T>>,什么时候使用ListProperty<T>

Zep*_*hyr 7

答案可以在ObjectProperty的 JavaFX 文档中找到,特别是这一行:

对于 ObservableList、ObservableSet 和 ObservableMap也报告集合内部变化的特殊实现,请分别参见 ListProperty、SetProperty 和 MapProperty。

因此,使用ObjectProperty<ObservableList<T>>如果将报告ObservableList本身的变化,但如果任何成员ObservableList发生变化。

因此,要回答您的问题,您将使用ObjectProperty<ObservableList<T>>when 您只需要在ObservableList已更改的情况下报告(即:添加或删除的项目)。ListProperty<T>如果您还需要跟踪对其中的实际项目所做的更改,则应该使用ObservableList

  • 注意:_如果 ObservableList 本身发生变化,将会报告_这是真的,但有一个问题 - 它始终会触发失效事件,但只有在 `!newList.equals(oldList)` 时才会更改事件。如果客户端代码需要重新连接侦听器,则后者会很讨厌(作为虚拟化控件的 fi 皮肤) - 您在这些上下文中使用 ListProperty 的建议是完整的:) (3认同)