JTreeクラスの定義とコンストラクタ
JTreeクラスの定義を確認します。クラス図は次のようになっています。
java.lang.Object java.awt.Component java.awt.Container javax.swing.JComponent javax.swing.JTree public class JTree extends JComponent implements Scrollable, Accessible
JTreeクラスはJComponentクラスのサブクラスとなっています。JComponentクラスはSwingで用いられる多くのコンポーネントのベースとなっているクラスです。
JTreeクラスのコンストラクタ
JTreeクラスをを利用するにはコンストラクタを使ってJTreeクラスのオブジェクトを作成します。どのようなコンストラクタが用意されているか確認してみます。
コンストラクタ |
---|
JTree() 新しい JDesktopPane を生成します。 |
JTree(Hashtable<?,?> value) Hashtable から生成された、ルートを表示しない JTree を返します。 |
JTree(Object[] value) 指定された配列の各要素を、表示されていない新しいルートノードの子として持つ JTree を返します。 |
JTree(TreeModel newModel) ルートノードを表示する JTree のインスタンスを返します。 |
JTree(TreeNode root) Hashtable 指定された TreeNode をルートに持つ、ルートノードを表示する JTree を返します。 |
JTree(TreeNode root, boolean asksAllowsChildren) ルートノードを表示し、ノードが葉ノードかどうかを指定された方法で決める、指定された TreeNode をルートとして持つ JTree を返します。 |
JTree(Vector<?> value) 指定された Vector の各要素を、表示されていない新しいルートノードの子として持つ JTree を返します。 |
コンストラクタは7つ用意されています。ツリーにデフォルトで表示されるノード(ツリーに表示される1つ1つのデータ)を指定するのに配列やVectorやHashtaleなどを使って指定できます。またルートノードを指定して作成することもできます。
では1番目のコンストラクタを確認してみます。
public JTree()
サンプルモデルを持つ JTree を返します。ツリーが使用するデフォルトモデル は、葉ノードを子のない任意ノードとして定義します。
実際の使い方は次のようになります。
JTree tree = new JTree();
サンプルプログラム
では簡単なサンプルを作成して試してみます。
import javax.swing.*; import java.awt.BorderLayout; public class JTreeTest1 extends JFrame{ public static void main(String[] args){ JTreeTest1 frame = new JTreeTest1(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setBounds(10, 10, 300, 200); frame.setTitle("タイトル"); frame.setVisible(true); } JTreeTest1(){ JTree tree = new JTree(); JPanel p = new JPanel(); p.add(tree); getContentPane().add(p, BorderLayout.CENTER); } }
上記をコンパイルした後で実行すると次のように表示されます。
JTreeクラスのデフォルトのコンストラクタを使うと最初からサンプルデータが含まれています。一番上に表示されているのがルートノードとなり、その下に3つの子ノードが含まれています。
ノードにさらに子ノードが含まれている場合、ノードをダブルクリックするか、又は各ノードの左側に表示されている丸と棒の組み合わせされた画像をクリックすると含まれている子ノードを展開して表示します。
この時、展開されたノードの左側に表示されていた丸と棒の組み合わされた画像が変化します。丸の横に棒があったものが丸の下に棒が表示されています。これはノードが展開されていることを示しています。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。