首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Binding.scala FXML:如何填充ObservableList属性

Binding.scala FXML:如何填充ObservableList属性
EN

Stack Overflow用户
提问于 2017-05-26 06:31:12
回答 1查看 186关注 0票数 1

我有这样的代码:

代码语言:javascript
复制
val state = Var(initialState)

// ...
type SavedSearchCmb = ComboBox[SavedSearch]
val savedSearchesCmb: Binding[SavedSearchCmb] =
  <SavedSearchCmb>
    <items>
      {state.bind.savedSearches}
    </items>
  </SavedSearchCmb>

编译器抱怨,

发现错误:必需的javafx.collections.ObservableListcom.dev1on1.timer.YouTrackAPI.SavedSearch : Seqcom.dev1on1.timer.YouTrackAPI.SavedSearch

生成项目的正确方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2017-05-26 06:38:10

根据FXML规范

只读列表属性是Bean属性,其getter返回java.util.List的实例,并且没有相应的setter方法。只读列表元素的内容在处理时会自动添加到列表中。

itemsSavedSearchCmb的list属性,但是它不是只读,因为有一个setter setItems。因此,以前版本的Binding.scala确实将savedSearches的内容附加到items属性中,而是尝试通过setItemsConstants分配给items

也就是说,根据规范,Binding.scala以前的行为是完全正确的。

FXML行为非常不方便。

幸运的是,Binding.scala不必支持Oracle的javafx.fxml.FXMLLoader完全相同的语法。

我决定打破规范,允许将数据绑定表达式的内容附加到任何列表属性,不管它是只读的还是非只读的。

此更改已包含在Binding.scala 11.0.1中。如果升级到Binding.scala 11.0.1,您的代码应该编译。

我们可以比原来的FXML规范做得更好。这就是为什么您选择Binding.scala而不是javafx.fxml.FXMLLoader

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44195066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档