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

クラスTextFieldTableCell<S,T>

  • 型パラメータ:
    S - TableViewジェネリック型の型
    T - TableColumnに含まれる要素の型。
    すべての実装されたインタフェース:
    Styleable, EventTarget, Skinnable


    public class TextFieldTableCell<S,T>
    extends TableCell<S,T>
    セル内にTextFieldノードを描画するTableCell実装を含むクラス。

    デフォルトでは、TextFieldTableCellは、編集されていない場合はLabelとしてレンダリングされ、編集モードの場合はTextFieldとしてレンダリングされます。 TextFieldは、デフォルトで、表のセル全体に表示するように拡大されます。

    導入されたバージョン:
    JavaFX 2.2
    • コンストラクタの詳細

      • TextFieldTableCell

        public TextFieldTableCell​()
        nullコンバータを使用して、デフォルトのTextFieldTableCellを作成します。 StringConverterが指定されていない場合、このセルはTextFieldからの入力を受け入れることができません(この入力を変換してドメイン・オブジェクトに戻す方法がわからないため)。 したがって、コンバータを個別に設定する場合を除き、このコンストラクタは使用しないことをお薦めします。
      • TextFieldTableCell

        public TextFieldTableCell​(StringConverter<T> converter)
        セル内容の編集を許可する編集モードに設定したときに、TextFieldを提供するTextFieldTableCellを作成します。 このメソッドは、すべてのTableColumnインスタンスで(その汎用型に関係なく)動作します。 ただし、これを有効化するには、指定された文字列を(ユーザーの入力から)型Tのインスタンスに変換するStringConverterを指定する必要があります。 このアイテムは、TableColumn.onEditCommitProperty()コールバックに渡されます。
        パラメータ:
        converter - 指定された文字列を(ユーザーの入力から)型Tのインスタンスに変換できるconverter
    • メソッドの詳細

      • forTableColumn

        public static <S,T> Callback<TableColumn<S,T>,TableCell<S,T>> forTableColumn​(StringConverter<T> converter)
        セルがダブルクリックされるか、またはTableView.edit(int, javafx.scene.control.TableColumn)が呼び出されたときに、TextFieldを提供してセル内容を編集できるようにします。 このメソッドは、すべてのTableColumnインスタンスで(その汎用型に関係なく)動作します。 ただし、これを有効化するには、指定された文字列を(ユーザーの入力から)型Tのインスタンスに変換するStringConverterを指定する必要があります。 このアイテムは、TableColumn.onEditCommitProperty()コールバックに渡されます。
        型パラメータ:
        S - TableViewジェネリック型の型
        T - TableColumnに含まれる要素の型
        パラメータ:
        converter - 指定された文字列を(ユーザーの入力から)型Tのインスタンスに変換できるStringConverter
        戻り値:
        コンテンツのテキスト編集を有効化する、TableColumnのcell factory propertyに挿入できるCallback
      • startEdit

        public void startEdit​()
        この関数を呼び出して、セルが編集可能な場合に、非編集状態から編集状態に遷移します。 セルがすでに編集状態である場合は、その状態のままになります。
        オーバーライド:
        startEdit 、クラス: TableCell<S,T>
      • cancelEdit

        public void cancelEdit​()
        この関数を呼び出して、ユーザーによる入力を保存せずに、編集状態から非編集状態に遷移します。
        オーバーライド:
        cancelEdit 、クラス: TableCell<S,T>
      • updateItem

        public void updateItem​(T item,
                               boolean empty)
        updateItemメソッドは、開発者にとって、呼び出すことはできないが、オーバーライドしてセルのビジュアルをカスタマイズできる、最適なメソッドです。 つまり、開発者は、コードでこのメソッドを呼び出さないようにしてください。このメソッドは、ListViewコントロールなどのUIコントロールによってのみ呼び出されるようにする必要があります。 ただし、updateItemメソッドが存在する理由は、開発者がカスタム・セル・ファクトリ(ListView cell factoryなど)を指定するときに、updateItemメソッドをオーバーライドして、セルを完全にカスタマイズできるようにすることです。

        CellのサブクラスがupdateItemメソッドを適切にオーバーライドすることは非常に重要であり、これは、そのようにしないと、セルが空白になったり、セルに予期しないコンテンツが含まれるなどの問題が発生するためです。 updateItemメソッドを適切にオーバーライドする方法の例を次に示します。

         protected void updateItem(T item, boolean empty) {
             super.updateItem(item, empty);
        
             if (empty || item == null) {
                 setText(null);
                 setGraphic(null);
             } else {
                 setText(item.toString());
             }
         }
         

        このコード・サンプルには次の2つの重要なポイントがあることに注意してください。

        1. super.updateItem(T, boolean)メソッドを呼び出します。 これを行わないと、itemプロパティとemptyプロパティが正しく設定されず、グラフィカルな問題が発生する可能性があります。
        2. empty状態をテストし、trueの場合は、textプロパティとgraphicプロパティをnullに設定します。 これを行わないと、ほぼ確実に、エンド・ユーザーに対して予想外のグラフィカル・アーティファクトがセル内に表示されます。
        オーバーライド:
        updateItem 、クラス: Cell<T>
        パラメータ:
        item - セルの新しいアイテム。
        empty - このセルがリストからのデータを表しているかどうか。 空の場合、いずれのドメイン・データも表しませんが、空の行のレンダリングに使用されるセルとなります。