サーチ…


単純なプロパティバインディング

JavaFXには、あるプロパティを別のプロパティにバインドする方法を提供するバインディングAPIがあります。つまり、あるプロパティの値が変更されるたびに、バインドされたプロパティの値が自動的に更新されます。単純バインディングの例:

SimpleIntegerProperty first =new SimpleIntegerProperty(5); //create a property with value=5
SimpleIntegerProperty second=new SimpleIntegerProperty();

public void test()
{
    System.out.println(second.get()); // '0'
    second.bind(first);               //bind second property to first
    System.out.println(second.get()); // '5'
    first.set(16);                    //set first property's value
    System.out.println(second.get()); // '16' - the value was automatically updated
}

また、加算、減算、除算などを適用してプリミティブプロパティをバインドすることもできます。

public void test2()
{
        second.bind(first.add(100));
        System.out.println(second.get()); //'105'
        second.bind(first.subtract(50));
        System.out.println(second.get()); //'-45'
}

任意のオブジェクトをSimpleObjectPropertyに入れることができます:

SimpleObjectProperty<Color> color=new SimpleObjectProperty<>(Color.web("45f3d1"));

双方向バインディングを作成することは可能です。この場合、プロパティは相互に依存します。

public void test3()
{
        second.bindBidirectional(first);
        System.out.println(second.get()+" "+first.get());
        second.set(1000);
        System.out.println(second.get()+" "+first.get()); //both are '1000'
}


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow