ユーザインタフェース 13章 ツリー
13.3. javax.swing.event.TreeExpansionListenerとjavax.swing.TreePath
「TreeExpansionListener」は「TreeExpansionEvent」を処理するイベントリスナーで、このイベントはツリーのノードが展開されたとき、または収納されたときに発生するイベントです。「JTree」の「addTreeExpansionListener」によって設定します。「treeCollapsed」メソッドが収納したとき、「treeExpanded」が展開したときに対応します。「javax.swing.event.TreeWillExpandListener」というものもあり、こちらはノードが展開する前、または収納される前に発生するイベントを処理するリスナーです。
「TreeExpansionListner」のメソッドは「TreeExpansionEvent」を処理しますが、このイベントは「getPath」メソッドを持ちます。このメソッドの返り値は「TreePath」オブジェクトで、ツリーのパスを表すクラスです。「TreePath」クラスの重要なメソッドを幾つか下に示しておきます。
getLastPathComponent | パスの一番最後(子供)のオブジェクトを返す |
getParentPath | パスから一番最後のオブジェクトを除いたパスを返す |
getPath | パスに含まれるオブジェクトの配列(ルートから)を返す |
getPathCount | パスに含まれるオブジェクトの数を返す |
isDescendant | 引数で指定されたパスが、自身が持つ要素を全て含む場合に「true」を返す |
pathByAddingChild | パスに引数で指定したオブジェクトを一番最後に追加したパスを返す。ただしツリーに子要素が追加されるわけではない。 |
(実習課題2)
実習課題1のプログラムを改良しなさい。
- ノードの展開したときに、展開したノードのパスをダイアログに表示する事。