我在初始化方法JavaFX中有这段代码:
montantPayeProperty = new SimpleDoubleProperty(0);
labelMontantPaye.textProperty().bind(montantPayeProperty.asString());
montantPayeProperty
是DoubleProperty
,labelMontantPaye
是Label
。
点击时我有一个按钮,这个方法叫做:
public void majMontantPaye(Double montantPaye) {
this.montantPayeProperty = new SimpleDoubleProperty(montantPaye);
}
问题是,当我点击按钮时,我的Label labelMontantPaye
不会自动刷新montantPaye
。为什么呢?
感谢。
答案 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