2016-10-12 65 views
2

如何在JavaFX中綁定到常量?如何在JavaFX中綁定到常量?

我發現像

myObject.myIntegerProperty().bind(new IntegerBinding() { 
    @Override 
    protected int computeValue() { 
     return 2; 
    } 
}); 

的方式,但它看起來太過分了。

有沒有短路的方法?

+5

爲什麼要綁定到常量?是不是隻要執行myObject.myIntegerProperty()。組(2);'? –

回答

1

作爲James_D pointed out:沒有必要創建一個常量的綁定,只需使用給定的值初始化屬性。不過,我建議使用ReadOnlyIntegerProperty,以確保該財產不被修改別的地方:

public final class MyClass { 

    private final ReadOnlyIntegerWrapper myInteger = new ReadOnlyIntegerWrapper(2); 

    public int getMyInteger() { 
     return myInteger.get(); 
    } 

    public ReadOnlyIntegerProperty myIntegerProperty() { 
     return myInteger.getReadOnlyProperty(); 
    } 

} 

注意的是,類應該是finalaccording to Jonathan Giles

傑夫Frieson大約有一篇文章read-only properties in JavaFX。這篇文章缺乏一點清晰度,所以我有點諱莫如歸。最大的問題是這些方法並不是最終的(儘管課程是這樣的,但我擔心人們不會注意到這一點)。如果子類試圖覆蓋getter/setter方法幷包含邏輯(因爲那時有兩個代碼路徑 - 通過setter設置並通過屬性方法設置),並且它們不重疊,導致標準規則適用 - 創建getter/setter/property方法時,始終使其成爲final。