静的メソッドIntegerProperty.integerProperty(Property<Integer>)
はProperty<Integer>
からIntegerProperty
を作成し、それらの間に双方向バインディングを確立します。この場合、Property<Integer>
のヌル値の扱い方は1つだけです。ゼロとして扱われます。
それはあなたのユースケースのために働く場合は、単に行うことができます。
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
が含まれている場合は、値を持つようにそれを強制的に行うことができます。