靜態方法IntegerProperty.integerProperty(Property<Integer>)
從Property<Integer>
創建IntegerProperty
並建立它們之間的雙向綁定。在這種情況下,您只有一個選項來處理Property<Integer>
中的空值:它們被視爲零。
是否適合你的使用情況,那麼你可以這樣做:
Property<Integer> age = new SimpleObjectProperty<>();
BooleanBinding canVote = IntegerProperty.integerProperty(age).greaterThanOrEqualTo(18);
否則,只使用標準的API,你需要手工創建綁定:
Property<Integer> age = new SimpleObjectProperty<>();
BooleanBinding canVote = Bindings.createBooleanBinding(() -> {
if (age.get() == null) {
return false ;
} else {
return age.get().intValue() >= 18 ;
}
}, age);
的其他選擇是使用(或寫...)第三方綁定庫。例如,使用ReactFX(反應性編程API爲JavaFX其中包含一些綁定API),你可以做
Property<Integer> age = new SimpleObjectProperty<>();
Val<Boolean> canVote = Val.map(age, a -> a >= 18);
這裏canVote
是Val<Boolean>
(Val
是ObservableValue
) 這是「空」如果age
包含null ,否則相應地爲true
或false
。你可以做
ObservableValue<Boolean> canVote = Val.map(age, a -> a >= 18).orElseConst(false);
,迫使它有一個值,如果age
包含null
。