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

クラスTableColumn<S,T>

  • 型パラメータ:
    S - TableView汎用型の型(つまり、S == TableView<S>)
    T - このTableColumnのすべてのセルのコンテンツの型。
    すべての実装されたインタフェース:
    Styleable, EventTarget


    public class TableColumn<S,T>
    extends TableColumnBase<S,T>
    implements EventTarget
    TableViewは、多数のTableColumnインスタンスで構成されます。 表内の各TableColumnでは、その列のコンテンツを表示(および編集)します。 TableColumnでは1つの列のデータの表示および編集を行うことに加え、次のことに必要なプロパティも含まれています。 TableColumnインスタンスを作成するときに設定する最も重要な2つのプロパティは、(列ヘッダー領域に表示する)列のtextおよび(列の個々のセルに値を移入するために使用される)列のcell value factoryです。 このことを行うには、次のコードのバリエーションを使用します。
     
     ObservableList<Person> data = ...
     TableView<Person> tableView = new TableView<Person>(data);
    
     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();
         }
      });
     
     tableView.getColumns().add(firstNameCol);}
    このアプローチでは、p.getValue()から返されたオブジェクトに単に返すことができるJavaFXのObservableValueがあることを前提としています。 この方法の利点は、TableViewによって内部的にバインディングが作成されるため、返されたObservableValueが変更された場合にセルのコンテンツが自動的にリフレッシュされることです。

    TableColumnがJavaFXよりも前に作成されたクラスと対話する必要がある状況、または通常プロパティにJavaFX APIを使用しない状況では、ReadOnlyObjectWrapperインスタンスで返された値をラップすることができます。 例:

     
     firstNameCol.setCellValueFactory(new Callback<CellDataFeatures<Person, String>, ObservableValue<String>>() {
         public ObservableValue<String> call(CellDataFeatures<Person, String> p) {
             return new ReadOnlyObjectWrapper(p.getValue().getFirstName());
         }
      });
    今後、コンビニエンス・セル値ファクトリが開発され、開発者が使用できるようになることが期待されています。 JavaFX 2.0リリース以降は、そのようなコンビニエンス・クラスが1つ(PropertyValueFactory)あります。 このクラスにより、前述のコードを記述する必要がなくなり、かわりにリフレクションを使用して文字列から特定のプロパティを参照します。 TableColumnでこれを使用する方法の詳細は、PropertyValueFactoryクラスのドキュメントを参照してください。 また、TableColumnの使用方法の詳細は、TableViewクラスのドキュメントを参照してください。
    導入されたバージョン:
    JavaFX 2.0
    関連項目:
    TableViewTableCellTablePosition
    • プロパティの詳細

      • cellValueFactory

        public final ObjectProperty<Callback<TableColumn.CellDataFeatures<S,T>,ObservableValue<T>>> cellValueFactoryProperty
        1つのTableColumn内のすべてのセルに値を移入する方法を指定するために、セル値ファクトリを設定する必要があります。 セル値ファクトリは、TableColumn.CellDataFeaturesインスタンスを提供するCallbackで、ObservableValueが返されることを想定しています。 返されるObservableValueインスタンスは、値に対する更新を画面上にすぐに反映できるように、内部的に監視されます。 セル値ファクトリの設定方法の例を次に示します。
        
         lastNameCol.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().lastNameProperty();
             }
          });
         }
         
        一般的なアプローチでは、Java Beanから単一の値を使用してTableColumnのセルに移入します。 この一般的なシナリオをサポートするために、PropertyValueFactoryクラスがあります。 使用方法の詳細は、このクラスを参照してください。ここでは、PropertyValueFactoryクラスを使用して前述の使用例を簡素化する方法を簡単に示します。
        
         lastNameCol.setCellValueFactory(new PropertyValueFactory<Person,String>("lastName"));
         
        関連項目:
        getCellValueFactory()setCellValueFactory(Callback)
      • cellFactory

        public final ObjectProperty<Callback<TableColumn<S,T>,TableCell<S,T>>> cellFactoryProperty
        この列のすべてのセルのセル・ファクトリ。 セル・ファクトリは、各TableCell内に含まれているデータを表の単一の列にレンダリングします。

        デフォルトでは、TableColumnはdefault cell factoryを使用しますが、たとえばデータを別の方法で表示したり編集をサポートするために、これをカスタム実装で置き換えることができます。カスタム・セル・ファクトリの作成に関するドキュメントは、他の場所にも多数あります(CellTableViewなどを参照)。

        最後に、javafx.scene.control.cellパッケージには多数の事前ビルドされたセル・ファクトリが用意されています。

        関連項目:
        getCellFactory()setCellFactory(Callback)
    • フィールドの詳細

      • DEFAULT_CELL_FACTORY

        public static final Callback<TableColumn<?,?>,TableCell<?,?>> DEFAULT_CELL_FACTORY
        TableColumnインスタンスにcellFactoryが指定されていない場合、これがデフォルトとして使用されます。 現時点では、itemがノードの場合はgraphicプロパティ内のTableCell itemプロパティを単にレンダリングし、nullでない場合はtoString()を単に呼び出して結果の文字列をtextプロパティ内に設定します。
    • コンストラクタの詳細

      • TableColumn

        public TableColumn​()
        デフォルトのセル・ファクトリ、コンパレータおよびonEditCommit実装を持つデフォルトのTableColumnを作成します。
      • TableColumn

        public TableColumn​(String text)
        指定された文字列に設定されたテキストおよびデフォルトのセル・ファクトリ、コンパレータ、onEditCommit実装を持つデフォルトのTableColumnを作成します。
        パラメータ:
        text - TableColumnがTableView内に配置されたときに表示する文字列。
    • メソッドの詳細

      • editAnyEvent

        public static <S,T> EventType<TableColumn.CellEditEvent<S,T>> editAnyEvent​()
        TableColumn編集イベントの親イベント。
        型パラメータ:
        S - TableViewジェネリック型の型
        T - このTableColumnのすべてのセルのコンテンツの型
        戻り値:
        任意のTableColumn編集イベント
      • editStartEvent

        public static <S,T> EventType<TableColumn.CellEditEvent<S,T>> editStartEvent​()
        ユーザーが編集イベントを開始するためのなんらかの操作を実行したか、またはTableView.edit(int, javafx.scene.control.TableColumn)メソッドが呼び出されたことを示します。
        型パラメータ:
        S - TableViewジェネリック型の型
        T - このTableColumnのすべてのセルのコンテンツの型
        戻り値:
        編集イベントを開始
      • editCancelEvent

        public static <S,T> EventType<TableColumn.CellEditEvent<S,T>> editCancelEvent​()
        編集が取り消されたこと、つまりバッキング・データ・ソースを変更できないことを示します。
        型パラメータ:
        S - TableViewジェネリック型の型
        T - このTableColumnのすべてのセルのコンテンツの型
        戻り値:
        編集イベントを取消
      • editCommitEvent

        public static <S,T> EventType<TableColumn.CellEditEvent<S,T>> editCommitEvent​()
        ユーザーによって編集がコミットされたこと、つまりバッキング・データ・ソースを変更して新しいデータを反映する必要があることを示します。
        型パラメータ:
        S - TableViewジェネリック型の型
        T - このTableColumnのすべてのセルのコンテンツの型
        戻り値:
        編集イベントをコミット
      • getTableView

        public final TableView<S> getTableView​()
        プロパティtableViewの値を取得します。
        プロパティの説明:
        このTableColumnが属するTableView。
      • setCellValueFactory

        public final void setCellValueFactory​(Callback<TableColumn.CellDataFeatures<S,T>,ObservableValue<T>> value)
        プロパティcellValueFactoryの値を設定します。
        プロパティの説明:
        1つのTableColumn内のすべてのセルに値を移入する方法を指定するために、セル値ファクトリを設定する必要があります。 セル値ファクトリは、TableColumn.CellDataFeaturesインスタンスを提供するCallbackで、ObservableValueが返されることを想定しています。 返されるObservableValueインスタンスは、値に対する更新を画面上にすぐに反映できるように、内部的に監視されます。 セル値ファクトリの設定方法の例を次に示します。
        
         lastNameCol.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().lastNameProperty();
             }
          });
         }
         
        一般的なアプローチでは、Java Beanから単一の値を使用してTableColumnのセルに移入します。 この一般的なシナリオをサポートするために、PropertyValueFactoryクラスがあります。 使用方法の詳細は、このクラスを参照してください。ここでは、PropertyValueFactoryクラスを使用して前述の使用例を簡素化する方法を簡単に示します。
        
         lastNameCol.setCellValueFactory(new PropertyValueFactory<Person,String>("lastName"));
         
      • getCellValueFactory

        public final Callback<TableColumn.CellDataFeatures<S,T>,ObservableValue<T>> getCellValueFactory​()
        プロパティcellValueFactoryの値を取得します。
        プロパティの説明:
        1つのTableColumn内のすべてのセルに値を移入する方法を指定するために、セル値ファクトリを設定する必要があります。 セル値ファクトリは、TableColumn.CellDataFeaturesインスタンスを提供するCallbackで、ObservableValueが返されることを想定しています。 返されるObservableValueインスタンスは、値に対する更新を画面上にすぐに反映できるように、内部的に監視されます。 セル値ファクトリの設定方法の例を次に示します。
        
         lastNameCol.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().lastNameProperty();
             }
          });
         }
         
        一般的なアプローチでは、Java Beanから単一の値を使用してTableColumnのセルに移入します。 この一般的なシナリオをサポートするために、PropertyValueFactoryクラスがあります。 使用方法の詳細は、このクラスを参照してください。ここでは、PropertyValueFactoryクラスを使用して前述の使用例を簡素化する方法を簡単に示します。
        
         lastNameCol.setCellValueFactory(new PropertyValueFactory<Person,String>("lastName"));
         
      • cellValueFactoryProperty

        public final ObjectProperty<Callback<TableColumn.CellDataFeatures<S,T>,ObservableValue<T>>> cellValueFactoryProperty​()
        1つのTableColumn内のすべてのセルに値を移入する方法を指定するために、セル値ファクトリを設定する必要があります。 セル値ファクトリは、TableColumn.CellDataFeaturesインスタンスを提供するCallbackで、ObservableValueが返されることを想定しています。 返されるObservableValueインスタンスは、値に対する更新を画面上にすぐに反映できるように、内部的に監視されます。 セル値ファクトリの設定方法の例を次に示します。
        
         lastNameCol.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().lastNameProperty();
             }
          });
         }
         
        一般的なアプローチでは、Java Beanから単一の値を使用してTableColumnのセルに移入します。 この一般的なシナリオをサポートするために、PropertyValueFactoryクラスがあります。 使用方法の詳細は、このクラスを参照してください。ここでは、PropertyValueFactoryクラスを使用して前述の使用例を簡素化する方法を簡単に示します。
        
         lastNameCol.setCellValueFactory(new PropertyValueFactory<Person,String>("lastName"));
         
        関連項目:
        getCellValueFactory()setCellValueFactory(Callback)
      • setCellFactory

        public final void setCellFactory​(Callback<TableColumn<S,T>,TableCell<S,T>> value)
        プロパティcellFactoryの値を設定します。
        プロパティの説明:
        この列のすべてのセルのセル・ファクトリ。 セル・ファクトリは、各TableCell内に含まれているデータを表の単一の列にレンダリングします。

        デフォルトでは、TableColumnはdefault cell factoryを使用しますが、たとえばデータを別の方法で表示したり編集をサポートするために、これをカスタム実装で置き換えることができます。カスタム・セル・ファクトリの作成に関するドキュメントは、他の場所にも多数あります(CellTableViewなどを参照)。

        最後に、javafx.scene.control.cellパッケージには多数の事前ビルドされたセル・ファクトリが用意されています。

      • getCellFactory

        public final Callback<TableColumn<S,T>,TableCell<S,T>> getCellFactory​()
        プロパティcellFactoryの値を取得します。
        プロパティの説明:
        この列のすべてのセルのセル・ファクトリ。 セル・ファクトリは、各TableCell内に含まれているデータを表の単一の列にレンダリングします。

        デフォルトでは、TableColumnはdefault cell factoryを使用しますが、たとえばデータを別の方法で表示したり編集をサポートするために、これをカスタム実装で置き換えることができます。カスタム・セル・ファクトリの作成に関するドキュメントは、他の場所にも多数あります(CellTableViewなどを参照)。

        最後に、javafx.scene.control.cellパッケージには多数の事前ビルドされたセル・ファクトリが用意されています。

      • cellFactoryProperty

        public final ObjectProperty<Callback<TableColumn<S,T>,TableCell<S,T>>> cellFactoryProperty​()
        この列のすべてのセルのセル・ファクトリ。 セル・ファクトリは、各TableCell内に含まれているデータを表の単一の列にレンダリングします。

        デフォルトでは、TableColumnはdefault cell factoryを使用しますが、たとえばデータを別の方法で表示したり編集をサポートするために、これをカスタム実装で置き換えることができます。カスタム・セル・ファクトリの作成に関するドキュメントは、他の場所にも多数あります(CellTableViewなどを参照)。

        最後に、javafx.scene.control.cellパッケージには多数の事前ビルドされたセル・ファクトリが用意されています。

        関連項目:
        getCellFactory()setCellFactory(Callback)
      • sortTypeProperty

        public final ObjectProperty<TableColumn.SortType> sortTypeProperty​()
        ソート順序(詳細は、TableView.getSortOrder()を参照)の一部である場合にこの列を昇順または降順でソートするかどうかを示すために使用されます。 このプロパティを単に切り替えると、TableViewのソート順序が変更されます(この列がsortOrder ObservableListに含まれていることが前提です)。
        関連項目:
        getSortType(), setSortType(TableColumn.SortType)
      • setSortType

        public final void setSortType​(TableColumn.SortType value)
        プロパティsortTypeの値を設定します。
        プロパティの説明:
        ソート順序(詳細は、TableView.getSortOrder()を参照)の一部である場合にこの列を昇順または降順でソートするかどうかを示すために使用されます。 このプロパティを単に切り替えると、TableViewのソート順序が変更されます(この列がsortOrder ObservableListに含まれていることが前提です)。
      • getSortType

        public final TableColumn.SortType getSortType​()
        プロパティsortTypeの値を取得します。
        プロパティの説明:
        ソート順序(詳細は、TableView.getSortOrder()を参照)の一部である場合にこの列を昇順または降順でソートするかどうかを示すために使用されます。 このプロパティを単に切り替えると、TableViewのソート順序が変更されます(この列がsortOrder ObservableListに含まれていることが前提です)。
      • setOnEditStart

        public final void setOnEditStart​(EventHandler<TableColumn.CellEditEvent<S,T>> value)
        プロパティonEditStartの値を設定します。
        プロパティの説明:
        このイベント・ハンドラは、ユーザーが編集を正常に開始すると起動されます。
      • getOnEditStart

        public final EventHandler<TableColumn.CellEditEvent<S,T>> getOnEditStart​()
        プロパティonEditStartの値を取得します。
        プロパティの説明:
        このイベント・ハンドラは、ユーザーが編集を正常に開始すると起動されます。
      • setOnEditCommit

        public final void setOnEditCommit​(EventHandler<TableColumn.CellEditEvent<S,T>> value)
        プロパティonEditCommitの値を設定します。
        プロパティの説明:
        このイベント・ハンドラは、ユーザーが編集を正常にコミットすると起動されます。
      • getOnEditCommit

        public final EventHandler<TableColumn.CellEditEvent<S,T>> getOnEditCommit​()
        プロパティonEditCommitの値を取得します。
        プロパティの説明:
        このイベント・ハンドラは、ユーザーが編集を正常にコミットすると起動されます。
      • setOnEditCancel

        public final void setOnEditCancel​(EventHandler<TableColumn.CellEditEvent<S,T>> value)
        プロパティonEditCancelの値を設定します。
        プロパティの説明:
        このイベント・ハンドラは、ユーザーがセルの編集を取り消すと起動されます。
      • getOnEditCancel

        public final EventHandler<TableColumn.CellEditEvent<S,T>> getOnEditCancel​()
        プロパティonEditCancelの値を取得します。
        プロパティの説明:
        このイベント・ハンドラは、ユーザーがセルの編集を取り消すと起動されます。
      • getColumns

        public final ObservableList<TableColumn<S,?>> getColumns​()
        これにより、関連データのグループ化に役立つネストされた列のサポートが可能になります。 たとえば、Name列に姓および名前用の2つのネストされた列がある場合があります。

        これは表にほとんど影響しません。すべての列インデックスはリーフ列のみを指し、親列を使用してリーフ列のみをソートすることはできません。 つまり、これは純粋に視覚的な機能です。

        定義:
        getColumns 、クラス: TableColumnBase<S,T>
        戻り値:
        このTableColumnBaseの子であるTableColumnBaseインスタンス(またはサブクラス)が含まれているObservableListです。 これらの子TableColumnBaseインスタンスは、表示可能として設定されている場合、この表の列の下に表示されます。
      • getCellObservableValue

        public final ObservableValue<T> getCellObservableValue​(int index)
        指定された索引のアイテム(型S)にObservableValue<T>を返そうとしています。 つまり、このメソッドは、ゼロ以上で基礎となるデータ・モデルのサイズより小さい整数値を受信することを想定しています。 インデックスが有効な場合、このメソッドは、この特定の列に対してObservableValue<T>を返します。

        これを実行するには、cell value factoryを呼び出し、CellDataFeaturesが渡されたときにそれによって返されたものを返します(詳細は、TableColumnおよびTreeTableColumnに属するCellDataFeaturesクラスなどを参照)。

        定義:
        getCellObservableValue 、クラス: TableColumnBase<S,T>
        パラメータ:
        index - ObservableValue<T>が検索されるアイテム(型S)のインデックス。
        戻り値:
        この特定の表の列のObservableValue<T>。
      • getCellObservableValue

        public final ObservableValue<T> getCellObservableValue​(S item)
        指定されたアイテム(型S)にObservableValue<T>を返そうとしています。 つまり、このメソッドは、表の行全体について基礎となるデータ・モデルからオブジェクトを受信することを想定し、この特定の列の値についてObservableValue<T>を返す必要があります。

        これを実行するには、cell value factoryを呼び出し、CellDataFeaturesが渡されたときにそれによって返されたものを返します(詳細は、TableColumnおよびTreeTableColumnに属するCellDataFeaturesクラスなどを参照)。

        定義:
        getCellObservableValue 、クラス: TableColumnBase<S,T>
        パラメータ:
        item - ObservableValue<T>が検索されるアイテム(型S)。
        戻り値:
        この特定の表の列のObservableValue<T>。
      • getTypeSelector

        public String getTypeSelector​()
        セレクタの照合に使用されるこのStyleableの型。 これはHTMLの要素に似ています (CSSタイプ・セレクタ)。
        定義:
        getTypeSelector 、インタフェース: Styleable
        戻り値:
        「TableColumn」
        導入されたバージョン:
        JavaFX 8.0
      • getStyleableParent

        public Styleable getStyleableParent​()
        このStyleableの親を返すか、親がない場合はnullを返します。
        定義:
        getStyleableParent 、インタフェース: Styleable
        戻り値:
        getTableView()
        導入されたバージョン:
        JavaFX 8.0
      • getCssMetaData

        public List<CssMetaData<? extends Styleable,?>> getCssMetaData​()
        このStyleableのCssMetaData。 これは変更不可能なリストとして返される場合があります。
        定義:
        getCssMetaData 、インタフェース: Styleable
        戻り値:
        CssMetaData
        導入されたバージョン:
        JavaFX 8.0
      • getClassCssMetaData

        public static List<CssMetaData<? extends Styleable,?>> getClassCssMetaData​()
        戻り値:
        このクラスに関連付けられたCssMetaData。スーパークラスのCssMetaDataを含むことがあります。
        導入されたバージョン:
        JavaFX 8.0
      • getStyleableNode

        public Node getStyleableNode​()
        このStyleableオブジェクトを表すNodeを返します。 このメソッドは、Styleable自体がノードではない場合にオーバーライドする必要があります。そのため、オプションで、自身のルート・ノード表現を返すことができます。 デフォルトでは、このメソッドはnullを返します。これは、Styleable自体がNodeであるか、そうでない場合に、Styleableがリクエスト時に使用可能なノード表現を持たないことを意味します。
        定義:
        インタフェースStyleable内のgetStyleableNode
        戻り値:
        このStyleableオブジェクトを表すNode