学生向けにプログラミングを解説。次>>断層化されたデータを表示するような場合にはツリーを利用すると便利です。ツリーを実現するための、コンポーネントは、javax.swing.JTreeですが、JTreeを処理するためのクラスとインターフェイスは、javax.swing.treeパッケージになります。treeパッケージには、ツリーの表示に関する情報や、内容が編集されたときの動作、内容がある場所の情報、ツリーデータのモデルなどが定義されています。+--javax.swing.JTreeツリーは、「ノード」と呼ばれる内容からなっています。ノードは、子ノードを持つ「ブランチ(branch)・ノード」と、子ノードを持たない「リーフ(leaf)・ノード」と分けることが出来ます。基になるノードは「ルート(root)・ノード」と呼ばれます。以下のようなツリーを生成すると、「Colors」「Sports」「food」という、ブランチ・ノードを持ったサンプルで、ツリーが生成されます。始めから自分でノードを定義して、ツリーを生成する場合には、javax.swing.treeパッケージのDefaultMutableTreeNodeクラスを使用してノードを作っていき、それらのノードを基にツリーを生成します。DefaultMutableTreeNodeは、javax.swing.tree.MutableTreeNodeインターフェイスなどを実装しています。MutableTreeNodeはjavax.swing.tree.TreeNodeインターフェイスを拡張したもので、ノードの挿入や削除、親子間の関係などを定義する場合に使用します。ノードに子ノードを追加する場合は、「add(MutableTreeNode)」メソッドを用います。JTree(root);ツリーモデルを使用することで、ノードの情報取得や、追加や削除などの他にも、ツリーの情報が変更された場合の通知なども可能になります。javax.swing.treeパッケージには、TreeModelインターフェイスを実装したDefaultTreeModelクラスが用意されています。先のノード生成とあわせて使用すると良いでしょう。JTreeクラスの「setEditable(boolean)」を用いることで、ノードの編集の可否を決めることが出来ます。編集は「トリプルクリック」あるいは「休止をはさんでマウスクリック2回→1200ミリ秒待つ」で始まります。ツリーで発行されるイベントを取得する手段のひとつとして、マウスイベントを利用する方法があります。マウスボタンがクリックされた(一番近い)場所からノードを取得することが出来ます。}}ツリー内の座標を元に「getRowForLocation()」(行数取得)、「getPathForLocation()」(パス取得)などで、クリックされた場所(ノード)を判別することが出来ます。javax.swing.eventパッケージに定義されているリスナやイベントを用いることで、以下のような情報の取得も出来ます。ツリーがノードの展開や収納を行った(実際に行う前に通知)ノードの追加は、現在のノードを取得した上で、そのノードに追加します。追加された情報を表示に反映させるにはjavax.swing.tree.TreePathクラスを用いて、再度パスを構築しなおすことが必要です。追加の一例を示します。「model」はツリーモデルのインスタンスとします。削除についても方法はいくつかありますが、下記はツリーモデルのメソッドを利用して、親ノードからノードを削除します。(DefaultMutableTreeNode)tree.getLastSelectedPathComponent();//親ノードから削除(modelはDefaultTreeModelのインスタンス)model.removeNodeFromParent(tn);以下のサンプルプログラムを作成して、実行してみましょう。JFrame("JTreeTest1");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(200,200);frame.getContentPane().add(tree.sp,"Center");frame.setVisible(true);}}実行すると、ツリー構造が表示されます。フォルダをクリックすると、内容が表示されます。ノード名の変更は出来ません。以下のサンプルプログラムを作成して、実行してみましょう。JFrame("JTreeTest2");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(200,200);frame.getContentPane().add(tree.sp,"Center");frame.setVisible(true);}}実行すると、ツリー構造が表示されます。フォルダをクリックすると、内容が表示されます。ノード名の変更ができます。編集は「トリプルクリック」あるいは「休止をはさんでマウスクリック2回→1200ミリ秒待つ」で始まります。以下のサンプルプログラムを作成して、実行してみましょう。}}実行すると、ツリー構造が表示されます。ノードの配置を自分で自由に決めました。ソースに追加すれば好きな配置で作成できます。ノード名の編集は出来ません。以下のサンプルプログラムを作成して、実行してみましょう。}}実行すると、ツリー構造が表示されます。ノードをボタンひとつで自由に追加、削除出来ます。ノード名の変更ができます。編集は「トリプルクリック」あるいは「休止をはさんでマウスクリック2回→1200ミリ秒待つ」で始まります。まとめはてなブログをはじめよう!MrRadiologyさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。