Javaプログラミング/Javaプログラミング関連情報

JTreeでツリー表示を作ろう!(2ページ目)

今回は、階層的にデータを表示する「JTree」の基本について説明します。

執筆者:掌田 津耶乃

TreeModelとTreeNodeの関係


JTreeのモデルには、いくつもの種類があります。固定されたデータを扱うものから、自由にデータ構造を変更できるものまで、働きの異なるものがいくつか揃っているのですね。一般に、javax.swing.treeパッケージの「TreeModel」というインターフェイスを実装したクラスを使います。データを自由に操作できるモデルとして利用する場合、標準では、「DefaultMutableTreeModel」という実装済みクラスが用意されています。

が! このDefaultTreeModelを作ったからといって、それだけですぐにJTreeのデータを構築できるわけではありません。ここが、JListやJTableと違って、JTreeのややこしいところです。JTreeは、階層的な構造を持った形でデータを構築するものですから、モデルに収めていくデータも、こうした構造を保持できるものでなければいけません。普通のStringなどでは、そんな芸当はできませんから、これもやはり専用のクラスを用意する必要があります。

このTreeModelで利用される項目用のクラスが、「TreeNode」というインターフェイスで、DefaultMutableTreeModelでは、これを実装済みの「DeafultMutableTreeNode」というものを使用します。これは自身の下の階層に項目を追加し管理する仕組みを持っており、これを組み合わせて階層構造を作っていくことができます。

package jp.allabout.java;

import java.awt.*;
import javax.swing.*;
import javax.swing.tree.*;

public class SampleApp extends JFrame{
  private static final long serialVersionUID = 1L;
  private JTree tree;
  private JScrollPane pane;
  
  public SampleApp(){
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
    tree = new JTree(getRootNode());
    pane = new JScrollPane(tree);
    this.add(pane,BorderLayout.CENTER);
    this.setSize(new Dimension(200,200));
  }
  
  private MutableTreeNode getRootNode(){
    DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");
    DefaultMutableTreeNode sub_a = new DefaultMutableTreeNode("Sub Node-A");
    root.add(sub_a);
    DefaultMutableTreeNode sub_b = new DefaultMutableTreeNode("Sub Node-B");
    root.add(sub_b);
    sub_a.add(new DefaultMutableTreeNode("Sub Node-A-1"));
    sub_a.add(new DefaultMutableTreeNode("Sub Node-A-2"));
    sub_b.add(new DefaultMutableTreeNode("Sub Node-B-1"));
    sub_b.add(new DefaultMutableTreeNode("Sub Node-B-2"));
    return root;
  }
  
  public static void main(String[] args) {
    new SampleApp().setVisible(true);
  }
}

DefaultMutableTreeNodeでノードを組み込んだところ。



  • 前のページへ
  • 1
  • 2
  • 3
  • 5
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます