【问题标题】:Which value is taken when bidirectionalbinding two properties with different values? [duplicate]双向绑定具有不同值的两个属性时取哪个值? [复制]
【发布时间】:2017-01-17 15:20:07
【问题描述】:

当我在 JavaFx 中双向绑定两个属性时,它们以不同的值开始,会被占用?

ObjectProperty<MyType> property1 = new SimpleObjectProperty(value1);
ObjectProperty<MyType> property2 = new SimpleObjectProperty(value2);
property1.bindBidirectional(property2);
// will both properties be set to value1 or to value2?

在我的测试中(设置略有不同),property2 似乎设置为property1 的值。但是,这是巧合还是我可以依赖的这种行为?我在 API 中没有找到任何关于此的内容。

因为我不能确定,我目前使用以下模式,但这对我来说似乎是多余的:

ObjectProperty<MyType> property1 = new SimpleObjectProperty(value1);
ObjectProperty<MyType> property2 = new SimpleObjectProperty(value2);
property1.setValue(property2.getValue());
property1.bindBidirectional(property2);

【问题讨论】:

  • 为什么不给它们同样的初始值呢?
  • @Bohemian 在现实情况下,它们并不相邻。但是我的模型中有一个主要值,其中设置了默认值。然后控件将绑定到这个默认值(例如选择框的选定值)

标签: java javafx-8


【解决方案1】:

javadoc 未指定行为,因此不应依赖您所做的任何测试和发现,因为 Java 的下一个版本可能会更改实现。

不要依赖未记录的行为,而是编写代码,以便内部实现无关紧要。

例如,给两个属性相同的值:

ObjectProperty<MyType> property1 = new SimpleObjectProperty(value1);
ObjectProperty<MyType> property2 = new SimpleObjectProperty(value1);
property1.bindBidirectional(property2);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    • 1970-01-01
    • 2021-01-31
    • 1970-01-01
    • 2016-09-07
    相关资源
    最近更新 更多