在JavaFX中绑定标签textProperty

时间:2016-09-16 06:59:36

标签: java javafx data-binding

我在初始化方法JavaFX中有这段代码:

montantPayeProperty = new SimpleDoubleProperty(0);
labelMontantPaye.textProperty().bind(montantPayeProperty.asString());

montantPayePropertyDoublePropertylabelMontantPayeLabel

点击时我有一个按钮,这个方法叫做:

public void majMontantPaye(Double montantPaye) {
   this.montantPayeProperty = new SimpleDoubleProperty(montantPaye);
}

问题是,当我点击按钮时,我的Label labelMontantPaye不会自动刷新montantPaye。为什么呢?

感谢。

3 个答案:

答案 0 :(得分:4)

致电时

labelMontantPaye.textProperty().bind(montantPayeProperty.asString());

您将存储在textProperty的{​​{1}}中的指针指向的对象绑定到Label中存储的指针所指向的对象。

致电时

montantPayeProperty

存储在this.montantPayeProperty = new SimpleDoubleProperty(montantPaye); 中的指针将指向一个新对象,但绑定在旧对象和montantPayeProperty之间仍然有效。旧对象未经修改,因此此属性不会更新。

您不应将指针设置为新对象,而是通过调用以下方式设置存储在当前指向对象中的值:

textProperty

montantPayeProperty.setValue(montantPaye);

答案 1 :(得分:3)

试试这个:

 public void majMontantPaye(Double montantPaye) {
  this.montantPayeProperty.setValue(montantPaye);
}

答案 2 :(得分:2)

您在setter中替换该属性,因此Label的{​​{1}}属性绑定到不同的属性实例。

一旦创建了属性,通常不应该替换它。而是应该修改存储在属性中的值。属性text(非延迟初始化)的标准是

value