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

クラスCheckBoxTreeCell<T>

  • 型パラメータ:
    T - TreeView TreeItemインスタンスに含まれている要素の型。
    すべての実装されたインタフェース:
    Styleable, EventTarget, Skinnable


    public class CheckBoxTreeCell<T>
    extends TreeCell<T>
    セル内にCheckBoxノードを描画し、それに加えて共通の操作に対するサポート(詳細は後述)を提供するTreeCell実装を含むクラス。

    CheckBoxでのTreeViewの作成を簡易化するために、CheckBoxTreeItemというコンビニエンス・クラスが提供されています。 開発者は、TreeViewツリー構造を構築する場合、通常のTreeItemクラスではなく、このクラスを使用することを強くお薦めします。 これら2つのクラスを組み合せる方法の例は、CheckBoxTreeItemのAPIドキュメントを参照してください。

    TreeViewで使用される場合、CheckBoxCellは公開ノード(つまり、矢印)の右にCheckBoxを配置してレンダリングされます。 TreeItem.getValue()に格納されているアイテムでは、StringConverterが呼び出され、このテキストが水平方向の残りのすべてのスペースを占めるようになります。 また、CheckBoxTreeItemを使用して、TreeViewは次のような状況を自動的に処理します。

    • 子を持つアイテムの横のCheckBoxをクリックすると、すべての子も選択または選択解除されます。
    • 親を持つアイテムの横のCheckBoxをクリックすると、親の状態が切り替わる可能性があります。 たとえば、単一の子を選択すると、親は不確定になります(複数の子の部分的選択を示します)。 続行してすべての子を選択すると、親も選択された状態になります。 これは再帰的で、すべての親ノードは予期したように更新されます。
    CheckBoxTreeItemの使用が望ましくないと判断した場合は、TreeItemインスタンスを入力として、ObservableValue<Boolean>を返すことができるCallbackが提供される、いずれかのコンストラクタを呼び出す必要があります。 このObservableValue<Boolean>は、指定されたTreeItemのブール型状態を表す必要があります。

    CheckBoxTreeCellはCheckBoxをライブ・レンダリングすること、つまり、CheckBoxは常に対話型で、ユーザーが直接切り替えることに注意してください。 これは、セルがそのediting stateに入る必要がないことを意味します(通常は、ユーザーがセル上をダブルクリックすると編集状態になります)。 これによる副次的影響は、通常の編集コールバック(on edit commitなど)が呼び出されないことです。 変更の通知を受け取る必要がある場合は、CheckBoxで操作されるブール型プロパティを直接監視することをお薦めします。

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

      • CheckBoxTreeCell

        public CheckBoxTreeCell​()
        デフォルトのTreeItemではなく、TreeViewがCheckBoxTreeItemインスタンスで構築されているとみなすデフォルトのCheckBoxTreeCellを作成します。 CheckBoxTreeItemを使用すると、ツリーの各アイテムの選択済状態と不確定状態が内部的に管理されます。
      • CheckBoxTreeCell

        public CheckBoxTreeCell​(Callback<TreeItem<T>,ObservableValue<Boolean>> getSelectedProperty)
        セル・ファクトリを経由してTreeViewコントロールで使用するCheckBoxTreeCellを作成します。 CheckBoxTreeCell()とは異なり、このメソッドはTreeViewのすべてのTreeItemインスタンスがCheckBoxTreeItemであるとはみなしません。

        このメソッドを呼び出すには、型TreeItem<T>のオブジェクトを指定すると、指定されたアイテムが選択されているかどうかを表すObservableValue<Boolean>を返すCallbackを提供する必要があります。 ObservableValue<Boolean>は双方向にバインドされます(つまり、セルのCheckBoxが、ユーザー操作に基づいてこのプロパティを設定または設定解除すること、およびCheckBoxは変更が外部で行われた場合、ObservableValue<Boolean>の状態を反映します)。

        アイテムがCheckBoxTreeItemインスタンスでない場合、親TreeItemと子TreeItemの状態の更新の処理は開発者の責任で行います。 これは、このクラスにTreeItemを指定すると、提供されているObservableValue<Boolean>を単に切り替えるのみで、それ以上のことは実行しないことを意味します。 この機能は外部で実装でき、その場合は、オブザーバをObservableValue<Boolean>に追加し、必要に応じて他のプロパティの状態を切り替えます。

        パラメータ:
        getSelectedProperty - 指定されたアイテムが選択されているかどうかを表すObservableValue<Boolean>を返すCallback
      • CheckBoxTreeCell

        public CheckBoxTreeCell​(Callback<TreeItem<T>,ObservableValue<Boolean>> getSelectedProperty,
                                StringConverter<TreeItem<T>> converter)
        セル・ファクトリを経由してTreeViewコントロールで使用するCheckBoxTreeCellを作成します。 CheckBoxTreeCell()とは異なり、このメソッドはTreeViewのすべてのTreeItemインスタンスがCheckBoxTreeItemであるとはみなしません。

        このメソッドを呼び出すには、型TreeItem<T>のオブジェクトを指定すると、指定されたアイテムが選択されているかどうかを表すObservableValue<Boolean>を返すCallbackを提供する必要があります。 ObservableValue<Boolean>は双方向にバインドされます(つまり、セルのCheckBoxが、ユーザー操作に基づいてこのプロパティを設定または設定解除すること、およびCheckBoxは変更が外部で行われた場合、ObservableValue<Boolean>の状態を反映します)。

        アイテムがCheckBoxTreeItemインスタンスでない場合、親TreeItemと子TreeItemの状態の更新の処理は開発者の責任で行います。 これは、このクラスにTreeItemを指定すると、提供されているObservableValue<Boolean>を単に切り替えるのみで、それ以上のことは実行しないことを意味します。 この機能は外部で実装でき、その場合は、オブザーバをObservableValue<Boolean>に追加し、必要に応じて他のプロパティの状態を切り替えます。

        パラメータ:
        getSelectedProperty - 指定されたアイテムが選択されているかどうかを表すObservableValue<Boolean>を返すCallback
        converter - TreeItem<T>型のオブジェクトを与えるStringConverterは、オブジェクトを視覚的に表現するために使用できるStringを返します。
    • メソッドの詳細

      • forTreeView

        public static <T> Callback<TreeView<T>,TreeCell<T>> forTreeView​()
        TreeViewコントロールで使用するセル・ファクトリを作成しますが、このセル・ファクトリをTreeViewで使用する際には、TreeViewルートおよびすべての子が、通常使用されるデフォルトのTreeItemではなくCheckBoxTreeItemのインスタンスであることが重要な前提となります。

        TreeViewで使用される場合、CheckBoxCellは公開ノード(つまり、矢印)の右にCheckBoxを配置してレンダリングされます。 TreeItem.getValue()に格納されているアイテムでは、StringConverterが呼び出され、このテキストが水平方向の残りのすべてのスペースを占めるようになります。 また、CheckBoxTreeItemを使用して、TreeViewは次のような状況を自動的に処理します。

        • 子を持つアイテムの横のCheckBoxをクリックすると、すべての子も選択または選択解除されます。
        • 親を持つアイテムの横のCheckBoxをクリックすると、親の状態が切り替わる可能性があります。 たとえば、単一の子を選択すると、親は不確定になります(複数の子の部分的選択を示します)。 続行してすべての子を選択すると、親も選択された状態になります。 これは再帰的で、すべての親ノードは予期したように更新されます。

        Javaでの制限があるため、このメソッドを使用する場合は明示的なキャストを指定する必要があります。 例:

         
         final TreeView<String> treeView = new TreeView<String>();
         treeView.setCellFactory(CheckBoxCell.<String>forTreeView());
        型パラメータ:
        T - CheckBoxTreeItemインスタンスに含まれている要素の型。
        戻り値:
        TreeViewルート、およびそのすべての子に含まれている要素の型で動作できるTreeCellを返すCallback(再帰的)。
      • forTreeView

        public static <T> Callback<TreeView<T>,TreeCell<T>> forTreeView​(Callback<TreeItem<T>,ObservableValue<Boolean>> getSelectedProperty)
        TreeViewコントロールで使用するセル・ファクトリを作成します。 forTreeView()とは異なり、このメソッドはTreeViewのすべてのTreeItemインスタンスがCheckBoxTreeItemインスタンスであるとはみなしません。

        TreeViewで使用される場合、CheckBoxCellは公開ノード(つまり、矢印)の右にCheckBoxを配置してレンダリングされます。 TreeItem.getValue()に格納されているアイテムでは、StringConverterが呼び出され、このテキストが水平方向の残りのすべてのスペースを占めるようになります。

        forTreeView()とは異なり、このセル・ファクトリは、親TreeItemまたは子TreeItemの状態の更新を処理しません。提供されているObservableValue<Boolean>を単に切り替えるのみで、それ以上のことは実行しません。 この機能は外部で実装でき、その場合は、オブザーバをObservableValue<Boolean>に追加し、必要に応じて他のプロパティの状態を切り替えます。

        型パラメータ:
        T - TreeItemインスタンスに含まれている要素の型。
        パラメータ:
        getSelectedProperty - TreeItem<T>型のオブジェクトを与えられたCallbackは、指定されたアイテムが選択されているかどうかを表すObservableValue<Boolean>を返します。 ObservableValue<Boolean>は双方向にバインドされます(つまり、セルのCheckBoxが、ユーザー操作に基づいてこのプロパティを設定または設定解除すること、およびCheckBoxは変更が外部で行われた場合、ObservableValue<Boolean>の状態を反映します)。
        戻り値:
        TreeViewルート、およびそのすべての子に含まれている要素の型で動作できるTreeCellを返すCallback(再帰的)。
      • forTreeView

        public static <T> Callback<TreeView<T>,TreeCell<T>> forTreeView​(Callback<TreeItem<T>,ObservableValue<Boolean>> getSelectedProperty,
                                                                        StringConverter<TreeItem<T>> converter)
        TreeViewコントロールで使用するセル・ファクトリを作成します。 forTreeView()とは異なり、このメソッドは、TreeViewのすべてのTreeItemインスタンスがCheckBoxTreeItemであるとはみなしません。

        TreeViewで使用される場合、CheckBoxCellは公開ノード(つまり、矢印)の右にCheckBoxを配置してレンダリングされます。 TreeItem.getValue()に格納されているアイテムでは、StringConverterが呼び出され、このテキストは水平方向の残りのすべてのスペースを占めるようになります。

        forTreeView()とは異なり、このセル・ファクトリは、親TreeItemまたは子TreeItemの状態の更新を処理しません。提供されているObservableValue<Boolean>を単に切り替えるのみで、それ以上のことは実行しません。 この機能は外部で実装でき、その場合は、オブザーバをObservableValue<Boolean>に追加し、必要に応じて他のプロパティの状態を切り替えます。

        型パラメータ:
        T - TreeItemインスタンスに含まれている要素の型。
        パラメータ:
        getSelectedProperty - TreeItem<T>型のオブジェクトを指定すると、指定されたアイテムが選択されているかどうかを表すObservableValue<Boolean>が返されるコールバックです。 ObservableValue<Boolean>は双方向にバインドされます(つまり、セルのCheckBoxが、ユーザー操作に基づいてこのプロパティを設定または設定解除すること、およびCheckBoxは変更が外部で行われた場合、ObservableValue<Boolean>の状態を反映します)。
        converter - TreeItem<T>型のオブジェクトを与えるStringConverterは、オブジェクトを視覚的に表現するために使用できるStringを返します。 forTreeView(Callback)のデフォルト実装は、すべての非nullアイテムでtoString()を単に呼び出します(指定されたアイテムがnullの場合、単に空の文字列を返します)。
        戻り値:
        TreeViewルート、およびそのすべての子に含まれている要素の型で動作できるTreeCellを返すCallback(再帰的)。
      • setSelectedStateCallback

        public final void setSelectedStateCallback​(Callback<TreeItem<T>,ObservableValue<Boolean>> value)
        画面上に表示されるCheckBoxによってバインドされるCallbackを設定します。
        パラメータ:
        value - 画面に表示されるCheckBoxにバインドされているCallback
      • getSelectedStateCallback

        public final Callback<TreeItem<T>,ObservableValue<Boolean>> getSelectedStateCallback​()
        画面上に表示されるCheckBoxによってバインドされるCallbackを返します。
        戻り値:
        画面に表示されるCheckBoxにバインドされているCallback
      • 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に設定します。 これを行わないと、ほぼ確実に、エンド・ユーザーに対して予想外のグラフィカル・アーティファクトがセル内に表示されます。
        パラメータ:
        item - セルの新しいアイテム。
        empty - このセルがリストからのデータを表しているかどうか。 空の場合、いずれのドメイン・データも表しませんが、空の行のレンダリングに使用されるセルとなります。