【问题标题】:Notifying ObservableBuffer listeners on content's member change通知 ObservableBuffer 监听器内容的成员变化
【发布时间】:2016-11-23 11:21:50
【问题描述】:

我有一个 ObservableBuffer[T] 包含许多元素,ComboBox[T] 最有可能使用 toString() 方法显示这些元素。

T 类(现在假设它是可变的)有一个 name 字段,该字段在程序执行期间发生更改。

但是(显然)这不会触发 ComboBox 重新加载元素,这是一项要求。

我发现解决这个问题的唯一方法是通过不变性 - 从集合中删除给定元素并添加更新的元素:

/* Context */
val items: ObservableBuffer[T]
val beforeChange: T

val afterChange: T = beforeChange.changed
items -= beforeChange
items += afterChange

此解决方案有效,并且不变性始终是一件好事,所以我可能会继续使用它,但仍然好奇这种方法是否是唯一可行的方法。

【问题讨论】:

    标签: scala events javafx scalafx


    【解决方案1】:

    如果您不能使用不可变项,您可以尝试使用javafx.collections.FXCollections.observableList(List list, Callback extractor) 构造一个可观察列表。然后使用extractor 通知可变元素的更改。另见Combobox refresh value and listview when object content change

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-17
      相关资源
      最近更新 更多