- java.lang.Object
-
- javafx.scene.control.TreeItem<T>
-
- 型パラメータ:
T
- TreeItem内のvalue
プロパティのタイプ。
- すべての実装されたインタフェース:
EventTarget
- 直系の既知のサブクラス:
CheckBoxTreeItem
public class TreeItem<T> extends Object implements EventTarget
TreeViewなどのコントロールに値の階層を提供する単一ノードのモデル。 モデルは、必要に応じてメモリーに値をロードできるように実装できます。モデルには、アイテムの数、それらの位置または値自体が変更されたときに通知を受けるリスナーを登録できます。 ただし、TreeItemはノードではないため、TreeItemでは視覚的なイベントは起動されないことに注意してください。 これらのイベントを取得するには、関連するオブザーバをTreeCellインスタンスに追加する必要があります(カスタム・セル・ファクトリを使用 - 詳細は、
Cell
クラスのドキュメントを参照)。最も単純な例として、次のようにメモリーでTreeItemインスタンスを作成できます。
このアプローチは、ツリー構造が単純である場合や、データが多すぎず、メモリーに容易に入る量である場合に適切に機能します。 ツリー構造のサイズが不明である(ため、非常に大きくなる可能性がある)場合は、オンデマンドで、メモリー効率の高い方法でTreeItemインスタンスを作成するオプションがあります。 ファイル・システム・ブラウザを作成する、次のコードでこのことを説明します。TreeItem<String> root = new TreeItem<String>("Root Node"); root.setExpanded(true); root.getChildren().addAll( new TreeItem<String>("Item 1"), new TreeItem<String>("Item 2"), new TreeItem<String>("Item 3") ); TreeView<String> treeView = new TreeView<String>(root);
TreeItem Eventsprivate TreeView buildFileSystemBrowser() { TreeItem<File> root = createNode(new File("/")); return new TreeView<File>(root); } // This method creates a TreeItem to represent the given File. It does this // by overriding the TreeItem.getChildren() and TreeItem.isLeaf() methods // anonymously, but this could be better abstracted by creating a // 'FileTreeItem' subclass of TreeItem. However, this is left as an exercise // for the reader. private TreeItem<File> createNode(final File f) { return new TreeItem<File>(f) { // We cache whether the File is a leaf or not. A File is a leaf if // it is not a directory and does not have any files contained within // it. We cache this as isLeaf() is called often, and doing the // actual check on File is expensive. private boolean isLeaf; // We do the children and leaf testing only once, and then set these // booleans to false so that we do not check again during this // run. A more complete implementation may need to handle more // dynamic file system situations (such as where a folder has files // added after the TreeView is shown). Again, this is left as an // exercise for the reader. private boolean isFirstTimeChildren = true; private boolean isFirstTimeLeaf = true; @Override public ObservableList<TreeItem<File>> getChildren() { if (isFirstTimeChildren) { isFirstTimeChildren = false; // First getChildren() call, so we actually go off and // determine the children of the File contained in this TreeItem. super.getChildren().setAll(buildChildren(this)); } return super.getChildren(); } @Override public boolean isLeaf() { if (isFirstTimeLeaf) { isFirstTimeLeaf = false; File f = (File) getValue(); isLeaf = f.isFile(); } return isLeaf; } private ObservableList<TreeItem<File>> buildChildren(TreeItem<File> TreeItem) { File f = TreeItem.getValue(); if (f != null && f.isDirectory()) { File[] files = f.listFiles(); if (files != null) { ObservableList<TreeItem<File>> children = FXCollections.observableArrayList(); for (File childFile : files) { children.add(createNode(childFile)); } return children; } } return FXCollections.emptyObservableList(); } }; }
TreeItemでは、シーングラフの他の場所と同じイベント・バブリングの概念をサポートします。 これは、すべてのTreeItemのイベントをリスニングする(このことは推奨されません)必要がないことを意味します。 かわりにイベント・リスナーをTreeViewの
root
アイテムにアタッチすることは、より適切で、大幅に低コストの解決策となります。 イベントが発生する場所とルートTreeItemの間にパスがあるかぎり、イベントはルート・アイテムにバブルされます。ただし、TreeItemがノードではないこと、つまり、TreeItemで定義されるイベント・タイプのみが配信されることに注意してください。 一般イベント(マウス操作など)をリスニングするには、TreeViewに含まれる
cells
に(cell factory
を指定して)必要なリスナーを追加する必要があります。TreeItemクラスでは、階層を定義して、数多くのイベントを定義します。 これらを次に示します(各イベント・タイプの詳細は、リンク先を参照)。
前述のインデントは、イベント・タイプ間の関係を示します。 たとえば、すべてのTreeItemのイベント・タイプには、親のイベント・タイプとして
treeNotificationEvent()
があり、expand
とcollapse
のブランチ・イベント・タイプは両方ともtreeNotificationEvent()
です。 パフォーマンス上の理由から、リスニングする必要があるイベントのみをリスニングすることをお薦めします。 つまり、たとえば、TreeItem.treeNotificationEvent()
ではなくTreeItem.valueChangedEvent()
をリスニングすることが推奨されます。- 導入されたバージョン:
- JavaFX 2.0
-
-
プロパティのサマリー
プロパティ Type プロパティ 説明 BooleanProperty
expanded
このTreeItemの展開された状態。ObjectProperty<Node>
graphic
値プロパティの左側に通常表示されるノード。ReadOnlyBooleanProperty
leaf
TreeItemに子がない場合にtrueであるTreeItemリーフ・プロパティを表します。ReadOnlyObjectProperty<TreeItem<T>>
parent
このTreeItemの親を表すプロパティ。ObjectProperty<T>
value
このTreeItem内に含まれるアプリケーション固有のデータを表すプロパティ。
-
ネストされたクラスのサマリー
ネストされたクラス 修飾子と型 クラス 説明 static class
TreeItem.TreeModificationEvent<T>
TreeItemの変更のすべての形式に関する関連情報を含むEvent
。
-
メソッドのサマリー
すべてのメソッド 静的メソッド インスタンス・メソッド 具象メソッド 修飾子と型 メソッド 説明 <E extends Event>
voidaddEventHandler(EventType<E> eventType, EventHandler<E> eventHandler)
このTreeItemにイベント・ハンドラを登録します。static <T> EventType<TreeItem.TreeModificationEvent<T>>
branchCollapsedEvent()
TreeItemが縮小状態になるようにTreeItemの展開プロパティが変更された場合に使用されるEventType。static <T> EventType<TreeItem.TreeModificationEvent<T>>
branchExpandedEvent()
TreeItemが展開状態になるようにTreeItemの展開プロパティが変更された場合に使用されるEventType。EventDispatchChain
buildEventDispatchChain(EventDispatchChain tail)
このターゲットのイベント・ディスパッチ・チェーンを構築します。static <T> EventType<TreeItem.TreeModificationEvent<T>>
childrenModificationEvent()
TreeItemの子リストが直接変更された場合に使用されるEventType。static <T> EventType<TreeItem.TreeModificationEvent<T>>
expandedItemCountChangeEvent()
TreeItemが変更され、その結果として子の数が視覚的に変わった場合に使用される汎用EventType。BooleanProperty
expandedProperty()
このTreeItemの展開された状態。ObservableList<TreeItem<T>>
getChildren()
このTreeItemの子。Node
getGraphic()
値プロパティの左側に通常表示されるノードを返します。TreeItem<T>
getParent()
このTreeItemの親。T
getValue()
このTreeItemが表すアプリケーション固有のデータを返します。static <T> EventType<TreeItem.TreeModificationEvent<T>>
graphicChangedEvent()
TreeItemのグラフィック・プロパティが変更された場合に使用されるEventType。ObjectProperty<Node>
graphicProperty()
値プロパティの左側に通常表示されるノード。boolean
isExpanded()
このTreeItemの展開された状態を返します。boolean
isLeaf()
子を持たないTreeItemはリーフです。ReadOnlyBooleanProperty
leafProperty()
TreeItemに子がない場合にtrueであるTreeItemリーフ・プロパティを表します。TreeItem<T>
nextSibling()
TreeItemの次の兄弟を返します。TreeItem<T>
nextSibling(TreeItem<T> afterNode)
指定されたノードの後にある次の兄弟を返します。ReadOnlyObjectProperty<TreeItem<T>>
parentProperty()
このTreeItemの親を表すプロパティ。TreeItem<T>
previousSibling()
TreeItemの前の兄弟を返します。TreeItem<T>
previousSibling(TreeItem<T> beforeNode)
指定されたノードの後にある前の兄弟を返します。<E extends Event>
voidremoveEventHandler(EventType<E> eventType, EventHandler<E> eventHandler)
以前に登録したイベント・ハンドラをこのTreeItemから登録解除します。void
setExpanded(boolean value)
このTreeItemの展開された状態を設定します。void
setGraphic(Node value)
値プロパティの左側に通常表示されるノードを設定します。void
setValue(T value)
このTreeItemが表すアプリケーション固有のデータを設定します。String
toString()
このTreeItem
オブジェクトの文字列表現を返します。static <T> EventType<TreeItem.TreeModificationEvent<T>>
treeNotificationEvent()
TreeItem内でイベントが発生したことを示すベースEventType。static <T> EventType<TreeItem.TreeModificationEvent<T>>
valueChangedEvent()
TreeItemの値プロパティが変更された場合に使用されるEventType。ObjectProperty<T>
valueProperty()
このTreeItem内に含まれるアプリケーション固有のデータを表すプロパティ。
-
-
-
プロパティの詳細
-
value
public final ObjectProperty<T> valueProperty
このTreeItem内に含まれるアプリケーション固有のデータを表すプロパティ。- 戻り値:
- このTreeItem内に含まれるアプリケーション固有のデータを表すプロパティ
-
graphic
public final ObjectProperty<Node> graphicProperty
値プロパティの左側に通常表示されるノード。 最大の効果を得るために、一般的には16x16のイメージとします。- 関連項目:
getGraphic()
、setGraphic(Node)
-
expanded
public final BooleanProperty expandedProperty
このTreeItemの展開された状態。
-
leaf
public final ReadOnlyBooleanProperty leafProperty
TreeItemに子がない場合にtrueであるTreeItemリーフ・プロパティを表します。- 関連項目:
isLeaf()
-
parent
public final ReadOnlyObjectProperty<TreeItem<T>> parentProperty
このTreeItemの親を表すプロパティ。- 関連項目:
getParent()
-
-
コンストラクタの詳細
-
TreeItem
public TreeItem()
空のTreeItemを作成します。
-
TreeItem
public TreeItem(T value)
指定されたオブジェクトに設定された値プロパティでTreeItemを作成します。- パラメータ:
value
- このTreeItemの値として格納されるオブジェクト。
-
-
メソッドの詳細
-
treeNotificationEvent
public static <T> EventType<TreeItem.TreeModificationEvent<T>> treeNotificationEvent()
TreeItem内でイベントが発生したことを示すベースEventType。 TreeItemでイベントが発生した場合は、それによってTreeItemの親プロパティに従ってTreeItemチェーンがバブル・アップされる前に、イベントが発生したTreeItemのリスナーに対してイベントが起動されます。 これは、その親のTreeItemがnullであるTreeItemが、イベントがバブルを停止してそれ以上行われなくなるこのポイントに達するまで繰り返されます。 これは、ツリー内の任意のポイントで発生するイベントについてアラートするために、リスナーをTreeViewルート・ノードにインストールすることのみ必要であるため、TreeItemで発生するイベントのコストを比較的低くできることを意味します。- 型パラメータ:
T
- TreeItemに含まれる値の型。- 戻り値:
- TreeItem内でイベントが発生したときのベースEventType
-
expandedItemCountChangeEvent
public static <T> EventType<TreeItem.TreeModificationEvent<T>> expandedItemCountChangeEvent()
TreeItemが変更され、その結果として子の数が視覚的に変わった場合に使用される汎用EventType。 通常、これはこのEventTypeのいずれかのサブタイプを使用して実現します(3つのサブタイプについては、branchExpandedEvent()
、branchCollapsedEvent()
およびchildrenModificationEvent()
を参照)。- 型パラメータ:
T
- TreeItemに含まれる値の型。- 戻り値:
- TreeItemが変更を受け取ったときの一般的なEventType
- 導入されたバージョン:
- JavaFX 8.0
-
branchExpandedEvent
public static <T> EventType<TreeItem.TreeModificationEvent<T>> branchExpandedEvent()
TreeItemが展開状態になるようにTreeItemの展開プロパティが変更された場合に使用されるEventType。- 型パラメータ:
T
- TreeItemに含まれる値の型。- 戻り値:
- TreeItemが変更を受け取ったときに使用されるEventType
-
branchCollapsedEvent
public static <T> EventType<TreeItem.TreeModificationEvent<T>> branchCollapsedEvent()
TreeItemが縮小状態になるようにTreeItemの展開プロパティが変更された場合に使用されるEventType。- 型パラメータ:
T
- TreeItemに含まれる値の型。- 戻り値:
- TreeItemが変更を受け取ったときのEventType
-
childrenModificationEvent
public static <T> EventType<TreeItem.TreeModificationEvent<T>> childrenModificationEvent()
TreeItemの子リストが直接変更された場合に使用されるEventType。- 型パラメータ:
T
- TreeItemに含まれる値の型。- 戻り値:
- TreeItemが子リストへの直接変更を受け取ったときのEventType
-
valueChangedEvent
public static <T> EventType<TreeItem.TreeModificationEvent<T>> valueChangedEvent()
TreeItemの値プロパティが変更された場合に使用されるEventType。- 型パラメータ:
T
- TreeItemに含まれる値の型。- 戻り値:
- TreeItemがそのvalueプロパティへの変更を受け取ったときのEventType
-
graphicChangedEvent
public static <T> EventType<TreeItem.TreeModificationEvent<T>> graphicChangedEvent()
TreeItemのグラフィック・プロパティが変更された場合に使用されるEventType。- 型パラメータ:
T
- TreeItemに含まれる値の型。- 戻り値:
- TreeItemがそのグラフィック・プロパティへの変更を受け取ったときのEventType
-
setValue
public final void setValue(T value)
このTreeItemが表すアプリケーション固有のデータを設定します。- パラメータ:
value
- アプリケーション固有のデータ
-
getValue
public final T getValue()
このTreeItemが表すアプリケーション固有のデータを返します。- 戻り値:
- このTreeItemが表すデータ
-
valueProperty
public final ObjectProperty<T> valueProperty()
このTreeItem内に含まれるアプリケーション固有のデータを表すプロパティ。- 戻り値:
- このTreeItem内に含まれるアプリケーション固有のデータを表すプロパティ
-
setGraphic
public final void setGraphic(Node value)
値プロパティの左側に通常表示されるノードを設定します。 最大の効果を得るために、一般的には16x16のイメージとします。- パラメータ:
value
- ユーザーに表示されるグラフィック・ノード。
-
getGraphic
public final Node getGraphic()
値プロパティの左側に通常表示されるノードを返します。 最大の効果を得るために、一般的には16x16のイメージとします。- 戻り値:
- ユーザーに表示されるグラフィック・ノード。
-
graphicProperty
public final ObjectProperty<Node> graphicProperty()
値プロパティの左側に通常表示されるノード。 最大の効果を得るために、一般的には16x16のイメージとします。- 関連項目:
getGraphic()
、setGraphic(Node)
-
setExpanded
public final void setExpanded(boolean value)
このTreeItemの展開された状態を設定します。 これは、子のないTreeItemに対しては効果がありません。 ただし、子を持つTreeItemでは、このプロパティを切り替えると、expandedがtrueかfalseかに基づいて、視覚的に子が表示されるか、非表示になります。- パラメータ:
value
- このTreeItemに子がある場合、true
を指定してsetExpandedを呼び出すと、子が表示されます。false
を指定してsetExpandedを呼び出すと、TreeItemに属するすべての子が非表示になります。
-
isExpanded
public final boolean isExpanded()
このTreeItemの展開された状態を返します。- 戻り値:
- このTreeItemの展開された状態を返します。
-
expandedProperty
public final BooleanProperty expandedProperty()
このTreeItemの展開された状態。
-
isLeaf
public boolean isLeaf()
子を持たないTreeItemはリーフです。 TreeItemをリーフにできる方法を定義する代替方法をサポートするために、isLeafメソッドをサブクラスによってオーバーライドすることはできますが、一般的な前提は同じです。つまり、リーフはユーザーが拡張できず、公開ノードの表示や拡張リクエストへの応答などは行われません。- 戻り値:
- このTreeItemに子がない場合はtrue
-
leafProperty
public final ReadOnlyBooleanProperty leafProperty()
TreeItemに子がない場合にtrueであるTreeItemリーフ・プロパティを表します。- 関連項目:
isLeaf()
-
getParent
public final TreeItem<T> getParent()
このTreeItemの親。 TreeItemごとに1つまで親を持つことができます。 TreeItemに親がない場合、それはツリー・モデルのルートを表します。- 戻り値:
- このTreeItemの親、またはTreeItemに親がない場合はnull。
-
parentProperty
public final ReadOnlyObjectProperty<TreeItem<T>> parentProperty()
このTreeItemの親を表すプロパティ。- 関連項目:
getParent()
-
getChildren
public ObservableList<TreeItem<T>> getChildren()
このTreeItemの子。 このメソッドは頻繁に呼び出されるため、返されるリストがTreeItemの実装によってキャッシュされることをお薦めします。- 戻り値:
- TreeItemに属する子のTreeItemを含むリスト。
-
previousSibling
public TreeItem<T> previousSibling()
TreeItemの前の兄弟を返します。 順序は、そのTreeItemの、TreeItemの親に属する子のリストにおける、その兄弟に対して相対的な位置に基づきます。- 戻り値:
- 現在のTreeItemの前の兄弟であるTreeItem、またはそのような兄弟が見つからない場合はnull。
-
previousSibling
public TreeItem<T> previousSibling(TreeItem<T> beforeNode)
指定されたノードの後にある前の兄弟を返します。 順序は、該当するTreeItemの、TreeItemの親に属する子のリストにおける、その兄弟に対して相対的な位置に基づきます。- パラメータ:
beforeNode
- 前の兄弟が検索中であるTreeItem。- 戻り値:
- 指定されたTreeItemの前の兄弟であるTreeItem、またはそのような兄弟が見つからない場合はnull。
-
nextSibling
public TreeItem<T> nextSibling()
TreeItemの次の兄弟を返します。 順序は、そのTreeItemの、TreeItemの親に属する子のリストにおける、その兄弟に対して相対的な位置に基づきます。- 戻り値:
- 現在のTreeItemの次の兄弟であるTreeItem、またはそのような兄弟が見つからない場合はnull。
-
nextSibling
public TreeItem<T> nextSibling(TreeItem<T> afterNode)
指定されたノードの後にある次の兄弟を返します。 順序は、該当するTreeItemの、TreeItemの親に属する子のリストにおける、その兄弟に対して相対的な位置に基づきます。- パラメータ:
afterNode
- 次の兄弟が検索中であるTreeItem。- 戻り値:
- 指定されたTreeItemの次の兄弟であるTreeItem、またはそのような兄弟が見つからない場合はnull。
-
toString
public String toString()
このTreeItem
オブジェクトの文字列表現を返します。
-
buildEventDispatchChain
public EventDispatchChain buildEventDispatchChain(EventDispatchChain tail)
このターゲットのイベント・ディスパッチ・チェーンを構築します。 イベント・ディスパッチ・チェーンには、このEventTarget
を対象にしたイベントの処理に関係する可能性があるイベント・ディスパッチャが含まれます。 このイベント・ターゲットはチェーンに自動的には追加されないため、これがイベントを処理する場合は、それ自体のEventDispatcher
をチェーンに追加する必要があります。イベント・ターゲットが階層の一部である場合、そのチェーンは通常、階層のルートからイベント・ターゲットまでの収集されたイベント・ディスパッチャから作成されます。
イベント・ディスパッチ・チェーンは、提供される初期イベント・ディスパッチ・チェーンに対する変更によって構築されます。 返されるチェーンでは初期チェーンが最後にある必要があるため、ディスパッチャは初期チェーンの前に追加される必要があります。
呼出し元は、初期チェーンが変更されないままであることや、返される値によって異なるチェーンが参照されることを想定できません。
- 定義:
buildEventDispatchChain
、インタフェース:EventTarget
- パラメータ:
tail
- 構築元となる初期チェーン- 戻り値:
- このターゲットの結果のイベント・ディスパッチ・チェーン
-
addEventHandler
public <E extends Event> void addEventHandler(EventType<E> eventType, EventHandler<E> eventHandler)
このTreeItemにイベント・ハンドラを登録します。 TreeItemクラスにより、アイテムの数、それらの位置または値自体が変更されたときに通知されるリスナーを登録できます。 ただし、TreeItemはノードではないため、TreeItemでは視覚的なイベントは起動されないことに注意してください。 これらのイベントを取得するには、関連するオブザーバをTreeCellインスタンスに追加する必要があります(カスタム・セル・ファクトリを使用 - 詳細は、Cell
クラスのドキュメントを参照)。- 型パラメータ:
E
- イベント- パラメータ:
eventType
- ハンドラが受け取るイベントのタイプeventHandler
- 登録するハンドラ- 例外:
NullPointerException
- イベント・タイプまたはハンドラがnullの場合
-
removeEventHandler
public <E extends Event> void removeEventHandler(EventType<E> eventType, EventHandler<E> eventHandler)
以前に登録したイベント・ハンドラをこのTreeItemから登録解除します。 1つのハンドラが複数の異なるイベント・タイプに登録されているため、呼出し元はハンドラを登録解除する特定のイベント・タイプを指定する必要があります。- 型パラメータ:
E
- イベント- パラメータ:
eventType
- 登録解除するイベント・タイプeventHandler
- 登録解除するハンドラ- 例外:
NullPointerException
- イベント・タイプまたはハンドラがnullの場合
-
-