ユーザインタフェース 13章 ツリー
13.4. javax.swing.event.TreeSelectionListener
「TreeSelectionListener」はツリーコンポーネントで選択されているノード(またはリーフ)が変化した場合に呼ばれるイベントリスナーです。「TreeSelectionEvent」オブジェクトを引数に取る「valueChanged」メソッドが唯一定義されているメソッドです。
「TreeSelectionEvent」で定義されているメソッドは基本的に選択されているノード(またはリーフ)のパスを返すメソッドです。また「LeadSelectionPath」という概念がありますが、これは最後に選択されたノード(またはリーフ)のパスを意味します。
(実習課題3)
実習課題1のプログラムを改良しなさい。
- ノード(またはリーフ)を選択したときに、選択されているノード(またはリーフ)を全てダイアログに表示する事。
13.5. javax.swing.tree.DefaultTreeModel
「DefaultTreeModel」は「JTree」が内部に持つ、標準の「TreeModel」です。「TreeModel」インタフェースを実装したクラスを作成して「JTree」クラスに設定する事もできますが、通常は「DefaultTreeModel」をそのまま使用します。
「DefaultTreeModel」クラスはリーフの追加および削除をするメソッドを提供します。「insertNodeInto」と「removeNodeFromParent」です。「insertNodeInto」は第1引数に追加するリーフ、第2引数にどの親のノードのところに追加するか、第3引数に何番目の子供として追加するか指定します。第3引数は親ノードに既に複数の子供がいる場合に意味がありますが、いない場合には「0」で良いでしょう。
「removeNodeFromParent」の引数は1つで、削除したいノードおよびリーフを指定します。中間ノードを指定した場合には、リーフも含めて全て削除されます。
(実習課題4)
実習課題1のプログラムを改良しなさい。
- 「追加」ボタンを追加し、現在選択されているノードにリーフを追加できるようにする事。リーフの文字はその都度、設定できるようにする事。またリーフにリーフは追加できないようにする事。
- 「削除」ボタンを追加し、現在選択されているノード(またはリーフ)を削除できるようにする事。