![](/img/trans.png)
[英]JavaFX: Binding a TextProperty (eg. Label) to a simple Integer
[英]Binding Label textProperty in JavaFX
我在初始化方法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
刷新。 為什么?
謝謝。
你打電話時
labelMontantPaye.textProperty().bind(montantPayeProperty.asString());
你要綁定由存儲在指針所指向的對象textProperty
中的Label
被存儲在指針指向對象montantPayeProperty
。
你打電話時
this.montantPayeProperty = new SimpleDoubleProperty(montantPaye);
存儲在montantPayeProperty
的指針將指向一個新對象,但是舊對象和textProperty
之間的綁定仍然有效。 舊對象未修改,因此此屬性不會更新。
您不應將指針設置為新對象,而應通過調用以下命令來設置存儲在當前指向的對象中的值:
montantPayeProperty.setValue(montantPaye);
或
montantPayeProperty.set(montantPaye);
嘗試這個:
public void majMontantPaye(Double montantPaye) {
this.montantPayeProperty.setValue(montantPaye);
}
您可以在設置器中替換屬性,因此Label
的text
屬性綁定到其他屬性實例。
創建屬性后,通常通常不應替換該屬性。 而是應修改存儲在屬性中的值。 屬性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();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.