簡體   English   中英

JavaFX中的綁定標簽textProperty

[英]Binding Label textProperty in JavaFX

我在初始化方法JavaFX中有以下代碼:

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

montantPayePropertyDoublePropertylabelMontantPayeLabel

我單擊時有一個按鈕,此方法稱為:

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);
}

您可以在設置器中替換屬性,因此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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM