モジュール javafx.base

パッケージjavafx.beans.binding

1つまたは複数のソースに依存する値を計算するBindingを作成および操作するクラスを提供します。

Bindingsの特性

バインディングは1つ以上のソースからアセンブルされ、通常バインディングの依存性と呼ばれます。 バインディングは依存性の変更を監視し、依存性の変更に従って自身の値を更新します。

このライブラリで定義されたほとんどすべてのバインディングは、依存性にObservableの実装が必要です。 すでに提供されている実装には、パッケージjavafx.beans.propertyのプロパティと、観測可能なコレクション(ObservableListObservableMap)の2タイプがあります。 バインディングはObservableも実装し、簡単なバインディングから非常に複雑なバインディングに至るまで他のバインディングを構築できるソースとしても役立ちます。

実装のバインディングは、常に遅延して計算されます。 つまり、依存性が変更されると、バインディングの結果がすぐに再計算されず、無効とマークされます。 次に無効なバインディングの値をリクエストする場合に計算されます。

上位レベルAPIおよび下位レベルAPI

バインディングAPIは、上位バインディングAPIと下位バインディングAPIの2つの部分に大別されます。 上位バインディングAPIでは、使いやすい形式で簡単なバインディングを構築できます。 上位レベルAPIによるバインディングの定義は、特にコード補完を提供するIDEを利用する場合に簡単なはずです。 ただし制限があり、その点で下位APIも役立ちます。 経験を積んだJava開発者は、上位レベルAPIの機能が十分でない場合、またはパフォーマンスを向上するために、下位レベルAPIを使用してバインディングを定義できます。 下位APIの主な目標は、高速な実行と小さいメモリー・フットプリントです。

両方のAPIの使用方法の例は、次のとおりです。 DoubleProperty ab c、およびdの4つのインスタンスがあると仮定して、a*b + c*dを高レベルAPIで計算するバインディングを定義できます:

NumberBinding result = Bindings.add (a.multiply(b), c.multiply(d));

下位レベルAPIを使用した同じバインディングの定義は、次のように実行できます。


DoubleBinding foo = new DoubleBinding() {

    {
        super.bind(a, b, c, d);
    }

    @Override
    protected double computeValue() {
        return a.getValue() * b.getValue() + c.getValue() * d.getValue();
    }
};