2016-09-16 73 views
1

我在初始化方法JavaFX的这样的代码:结合标记textProperty JavaFX中

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

montantPayePropertyDoubleProperty,和labelMontantPayeLabel

而且我有,当我点击一个按钮,这种方法被称为:

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

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

谢谢。

回答

3

试试这个:

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

谢谢,它的工作原理! – Benj

2

您更换财产,你的二传手,所以Labeltext属性绑定到一个不同的属性实例。

属性通常在创建后不应更换。相反,应该修改存储在属性中的值。为属性value(非延迟初始化)标准将是

private final DoubleProperty value = new SimpleDoubleProperty(); 

public DoubleProperty valueProperty() { 
    return value; 
} 

public void setValue(double value) { 
    this.value.set(value); 
} 

public double getValue() { 
    return value.get(); 
} 
4

当调用

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

要绑定由存储在LabeltextProperty到对象的指针所指向的对象由存储在montantPayeProperty中的指针指向。

当你调用

this.montantPayeProperty = new SimpleDoubleProperty(montantPaye); 

存储在montantPayeProperty将指向一个新的对象指针,但绑定仍然会积极旧的对象和textProperty之间。旧对象未修改,因此此属性不会更新。

你不应该通过调用指针设置为一个新的对象,但设置存储在当前指向对象的值:

montantPayeProperty.setValue(montantPaye); 

montantPayeProperty.set(montantPaye); 
+0

这是一个信息丰富的答案,不只是回答问题,而是提供一些背景知识和其他知识。很好 :-) – Gikkman