首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何绑定到JavaFX中的复合属性组件?

如何绑定到JavaFX中的复合属性组件?
EN

Stack Overflow用户
提问于 2016-05-19 11:41:29
回答 2查看 379关注 0票数 0

JavaFX中有一些属性,比如boundsInParentProperty(),它是Bounds类型的。这个类有几个组件,它们是不可观察的。

那么,如果我想绑定其中一个呢?

例如,到Bounds#getMinX()

我们有一些bind...函数来提取属性的组件吗?我是否可以确保侦听器在不同的组件更改时会得到通知?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-19 16:20:19

Bindings.selectDouble可用于创建此绑定:

代码语言:javascript
复制
DoubleBinding minXBinding = Bindings.selectDouble(node.boundsInParentProperty(), "minX");

我是否可以确保侦听器在不同的组件更改时会得到通知?

是。尽管没有文档表明Bounds是不可变的,但是通过查看源代码,您可以发现:

  • 属性(如minX )存储在具有private访问权限的字段中。
  • 除了构造函数之外,没有对这些字段的写访问。
  • 这些属性的getter是final

因此,Bounds实际上是不可变的,因此,如果边界发生变化,则可以确保必须替换属性的值。

票数 2
EN

Stack Overflow用户

发布于 2016-05-19 15:36:15

对于boundsInParentProperty(),您可以使用Bindings.createDoubleBinding

代码语言:javascript
复制
 DoubleBinding minXBinding = Bindings.createDoubleBinding(() -> boundsInParentProperty.get().getMinX(), boundsInParentProperty);

 DoubleProperty minX = new SimpleDoubleProperty();
 minX.bind(minXBinding);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37322140

复制
相关文章

相似问题

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