2
如何在JavaFX中綁定到常量?如何在JavaFX中綁定到常量?
我發現像
myObject.myIntegerProperty().bind(new IntegerBinding() {
@Override
protected int computeValue() {
return 2;
}
});
的方式,但它看起來太過分了。
有沒有短路的方法?
如何在JavaFX中綁定到常量?如何在JavaFX中綁定到常量?
我發現像
myObject.myIntegerProperty().bind(new IntegerBinding() {
@Override
protected int computeValue() {
return 2;
}
});
的方式,但它看起來太過分了。
有沒有短路的方法?
作爲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();
}
}
注意的是,類應該是final
according to Jonathan Giles:
傑夫Frieson大約有一篇文章read-only properties in JavaFX。這篇文章缺乏一點清晰度,所以我有點諱莫如歸。最大的問題是這些方法並不是最終的(儘管課程是這樣的,但我擔心人們不會注意到這一點)。如果子類試圖覆蓋getter/setter方法幷包含邏輯(因爲那時有兩個代碼路徑 - 通過setter設置並通過屬性方法設置),並且它們不重疊,導致標準規則適用 - 創建getter/setter/property方法時,始終使其成爲final。
爲什麼要綁定到常量?是不是隻要執行myObject.myIntegerProperty()。組(2);'? –