当三个属性在一个循环中有界时会发生什么?

时间:2014-10-19 18:11:44

标签: binding javafx

我已经绑定了三个属性形成一个绑定循环。但我不确定如何解释结果。

DoubleProperty d1 = new SimpleDoubleProperty(1);
DoubleProperty d2 = new SimpleDoubleProperty(2);
DoubleProperty d3 = new SimpleDoubleProperty(3);

d1.bind(d2.multiply(2)); //d1 = 4
d2.bindBidirectional(d3);//d2 = 3, d1 = 6
d3.bind(d1);

最后,输出是

  

d1 = 12.0,d2 = 6.0,d3 = 12.0

问题是为什么d1,d2和d3的值不等于24,12和24?

停止绑定的规则是什么?

我想我在这里收到错误。

1 个答案:

答案 0 :(得分:0)

绑定检测到绑定中的无限循环。你改变的第一个值是d3。 d3改变后第二次停止计算下一个值。所以规则就是如果第二次更改属性,是循环并且计算停止。只需调试此代码,看看如果您感兴趣,会发生什么;)