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番目のコンストラクタを確認してみます。

サンプルモデルを持つ JTree を返します。ツリーが使用するデフォルトモデル
は、葉ノードを子のない任意ノードとして定義します。

実際の使い方は次のようになります。

JTree tree = new JTree();

サンプルプログラム

では簡単なサンプルを作成して試してみます。

JTreeTest1.java

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のサンプル

JTreeクラスのデフォルトのコンストラクタを使うと最初からサンプルデータが含まれています。一番上に表示されているのがルートノードとなり、その下に3つの子ノードが含まれています。

ノードにさらに子ノードが含まれている場合、ノードをダブルクリックするか、又は各ノードの左側に表示されている丸と棒の組み合わせされた画像をクリックすると含まれている子ノードを展開して表示します。

JTreeのサンプル

JTreeのサンプル

この時、展開されたノードの左側に表示されていた丸と棒の組み合わされた画像が変化します。丸の横に棒があったものが丸の下に棒が表示されています。これはノードが展開されていることを示しています。

JTreeのサンプル

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。