2014-10-19 92 views
1

我已经绑定了三个属性,形成一个绑定循环。但我不确定如何解释结果。当三个属性在一个循环中有界时会发生什么?

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

你“认为”你得到一个错误?你有没有遇到错误?如果你这样做,它是什么? – 2014-10-19 19:45:20

+0

我以为我会得到一个错误,但不是,我没有得到一个错误。 – rulo4 2014-10-22 17:27:09

回答

0

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

相关问题