본문 바로가기

Programming/JAVA

[Swing] JTree를 이용해 트리 구성하기


TreeNode 인터페이스를 구현한 DefaultMutableTreeNode 클래스를 사용합니다. 

 

방법은 간단합니다.

 

DefaultMutableTreeNode를 만들때 생성자로 노드명을 적습니다.

 

DefaultMutableTreeNode root = DefaultMutableTreeNode("루트노드요");

 

이러면 노드가 한개 생긴검니다.

 

 

DefaultMutableTreeNode child1 = DefaultMutableTreeNode("1번째자식");

DefaultMutableTreeNode child2 = DefaultMutableTreeNode("2번째 자식");

 

이렇게 두개 만들수도 있지요.

 

얘들을 루트노드 하위노드로 만들수 있습니다.

 

root.add(child1); root.add(child2);     

 

child도 이런식으로 자식을 가질수 있지요.

 

이렇게 피라미드형태로 트리구성이 가능합니다.

 

결국 이렇게 만들어진 트리중에 제일 꼭대기에 있는 노드만 있으면 이걸 이미지로 출력할수 있습니다.

 

여기선 root 노드네요.

 

JTree 라는 컴포넌트가 있는데요. 얘는 생성자로 TreeNode를 받습니다.,

 

DefaultMutableTreeNode 는 TreeNode를 구현했으니 여기에 들어갈수 있죠 다형성 다형성!!

 

JTree myTree = new JTree(root);       이것을 이제 프레임이나 패널에 넣으면 됨니다.

 

JFrame myFrame = new JFrame("트리");


Container con = myFrame.getContentPane();
con.setLayout(new BorderLayout());
con.add(myTree);             <----------이부분!!!

 

실행 결과 입니다.

 

 

 

완성 소스 입니다.

 

 

import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;

public class MyTree {
 JFrame myFrame;
 
 public MyTree(String title){
  myFrame = new JFrame(title);
  Container con = myFrame.getContentPane();
  
  DefaultMutableTreeNode root = new DefaultMutableTreeNode("루트노드요"); 
  DefaultMutableTreeNode child1 = new DefaultMutableTreeNode("1번째자식");
  DefaultMutableTreeNode child2 = new DefaultMutableTreeNode("2번째 자식");
  DefaultMutableTreeNode child1_child1 = new DefaultMutableTreeNode("1번째자식의 1번째자식");
  DefaultMutableTreeNode child1_child2 = new DefaultMutableTreeNode("1번째자식의 2번째자식");
  DefaultMutableTreeNode child2_child1 = new DefaultMutableTreeNode("2번째자식의 1번째자식");
  DefaultMutableTreeNode child2_child2 = new DefaultMutableTreeNode("2번째자식의 2번째자식");
  
  root.add(child1); root.add(child2);
  child1.add(child1_child1); child1.add(child1_child2);
  child2.add(child2_child1); child2.add(child2_child2);

  JTree myTree = new JTree(root);
  con.setLayout(new BorderLayout());
  con.add(myTree);
  
  myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  myFrame.setSize(300, 200);
  myFrame.setVisible(true);
 }
 
 public static void main(String[] args) {
  MyTree t = new MyTree("트리만들기");
 }
}