モジュール javafx.controls
パッケージ javafx.scene.control.cell

クラスPropertyValueFactory<S,T>

  • 型パラメータ:
    S - TableView.itemsリストに含まれるクラスの型。
    T - TableColumnセルに含まれるクラスの型。
    すべての実装されたインタフェース:
    Callback<TableColumn.CellDataFeatures<S,T>,ObservableValue<T>>


    public class PropertyValueFactory<S,T>
    extends Object
    implements Callback<TableColumn.CellDataFeatures<S,T>,ObservableValue<T>>
    TableColumnセル値ファクトリ内で使用するために特別に設計された、Callbackインタフェースの簡易実装。 このクラスの使用方法の例を次に示します。
    
     TableColumn<Person,String> firstNameCol = new TableColumn<Person,String>("First Name");
     firstNameCol.setCellValueFactory(new PropertyValueFactory<Person,String>("firstName"));
     

    この例では、PersonTableView itemsリストのクラス型です。 クラスPersonはpublic宣言されなければなりません。 PropertyValueFactoryは、コンストラクタ引数"firstName"を使用して、Personがパブリック・メソッドfirstNamePropertyを仮引数なしで返し、戻り値の型がObservableValue<String>であると仮定します。

    そのようなメソッドが存在する場合、それは呼び出され、さらにProperty<String>のインスタンスを返すと仮定されます。 戻り値は、TableCellを移入するために使用されます。 さらに、TableViewはオブザーバを戻り値に追加し、発生した変更がTableViewによって観察され、セルが直ちに更新されます。

    そのようなメソッドが存在しない場合、PropertyValueFactoryは、Personが、パブリック・メソッドgetFirstNameまたはisFirstNameを仮パラメータなしで返し、戻り値の型がStringであるとみなします。 そのようなメソッドが存在する場合は、それが呼び出され、その戻り値がReadOnlyObjectWrapperにラップされ、TableCellに戻されます。 この場合、上記の第1のアプローチとは異なり、TableCellはプロパティの変更を監視することができません。

    参照用として(およびTableColumn cell value factoryドキュメントに示されているように)、前述のコードの長い形式は次のようになります。

    
     TableColumn<Person,String> firstNameCol = new TableColumn<Person,String>("First Name");
     firstNameCol.setCellValueFactory(new Callback<CellDataFeatures<Person, String>, ObservableValue<String>>() {
         public ObservableValue<String> call(CellDataFeatures<Person, String> p) {
             // p.getValue() returns the Person instance for a particular TableView row
             return p.getValue().firstNameProperty();
         }
      });
     }
     

    アプリケーションをモジュールとしてデプロイ

    参照先のクラスが名前付きモジュールにある場合、javafx.baseモジュールには反射的にアクセス可能でなければなりません。 モジュールが少なくともjavafx.baseモジュールに含まれているパッケージをopensすると、クラスは反射的にアクセス可能です。 それ以外の場合、call(TableColumn.CellDataFeatures)メソッドは警告を記録し、nullを返します。

    たとえば、Personクラスがfoo.appモジュールのcom.fooパッケージにある場合、module-info.javaは次のようになります:

    module foo.app {
        opens com.foo to javafx.base;
    }

    あるいは、モジュールが含まれているパッケージを無条件にexportsすると、クラスは反射的にアクセス可能です。

    導入されたバージョン:
    JavaFX 2.0
    関連項目:
    TableColumnTableViewTableCellTreeItemPropertyValueFactoryMapValueFactory
    • コンストラクタの詳細

      • PropertyValueFactory

        public PropertyValueFactory​(String property)
        指定されたプロパティ名を使用して、指定されたTableView行アイテムから再帰的に値を抽出するためにデフォルトのPropertyValueFactoryを作成します。
        パラメータ:
        property - 指定されたオブジェクトの対応する値を再帰的に抽出する試行に使用するプロパティの名前。
    • メソッドの詳細

      • call

        public ObservableValue<T> call​(TableColumn.CellDataFeatures<S,T> param)
        callメソッドが必要に応じて呼び出され、型Rのオブジェクトが返される条件とともに単一の引数の型Pを与えられます。
        定義:
        インタフェースCallback<S,T>内のcall
        パラメータ:
        param - 戻り値を決定する必要がある単一の引数。
        戻り値:
        指定されたパラメータ値に基づいて決定可能な型Rのオブジェクト。
      • getProperty

        public final String getProperty​()
        コンストラクタで提供されるプロパティ名を返します。
        戻り値:
        コンストラクタで提供されるプロパティ名