JAVA Tree CellRenderer - Icon setting

트리의 노드형태는 리스트와 콤보박스와 마찬가지로 CellRenderer인터페이스를 통해 관리한다.
TreeCellRenderer라는 인터페이스가 있고, 이것을 구현한 DefaultTreeCellRenderer가 존재한다. 

DefaultCellRenderer에는 노드의 아이콘을 변경할 수 있는 메소드 들이 존재한다. 

  • void setLeafIcon(Icon icon) - leafnode 의 아이콘을 icon으로 설정한다.
  • void setClosedIcon(Icon icon) - 닫혀진 node의 아이콘을 icon으로 설정한다.
  • void setOpenIcon(Icon icon) - 열린 node의 아이콘을 icon으로 설정한다.
 
다음 예제는 DefaultTreeCellRender를 이용하여 아이콘을 변경하는 예제이다. 
순서는 다음과 같다. 
  1. 트리의 노드들을 생성하고 , 붙여주어서 트리를 만든다.
  2. DefaultCellRenderer객체를 하나 만들고, 아이콘 설정 메소드들를 이용하여 아이콘 설정
  3. 트리의 setRenderer()메소드를 이용하여 renderer를 변경한다.
  4. 완성된 트리를 pane에 붙임으로 완성한다.

  1. import javax.swing.*;
  2. import javax.swing.tree.*;;
  3.  
  4. public class TreeIcon extends JFrame{
  5.     protected JTree tree;
  6.    
  7.     public TreeIcon(){
  8.         super("아이콘이 있는 트리");
  9.        
  10.         //트리만들어주기
  11.         DefaultMutableTreeNode root=  new DefaultMutableTreeNode("ROOT");
  12.         DefaultMutableTreeNode parent=  new DefaultMutableTreeNode("PARENT");
  13.         DefaultMutableTreeNode child1=  new DefaultMutableTreeNode("CHILD1");
  14.         DefaultMutableTreeNode child2=  new DefaultMutableTreeNode("CHILD2");
  15.         parent.add(child1);
  16.         parent.add(child2);
  17.         root.add(parent);
  18.         tree = new JTree(root);
  19.        
  20.         //아이콘을 변경해주기
  21.         DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer();
  22.         renderer.setLeafIcon(new ImageIcon("child.gif"));
  23.         renderer.setClosedIcon(new ImageIcon("parent_close.gif"));
  24.         renderer.setOpenIcon(new ImageIcon("parent_open.gif"));
  25.        
  26.         tree.setCellRenderer(renderer);
  27.         tree.setEditable(true);
  28.        
  29.         setDefaultCloseOperation(EXIT_ON_CLOSE);
  30.         getContentPane().add("Center",new JScrollPane(tree));
  31.         setSize(300,200);
  32.         setVisible(true);
  33.        
  34.     }
  35.     public static void main(String args[]){
  36.         new TreeIcon();
  37.     }
  38. }
 
 

댓글

이 블로그의 인기 게시물

[Win32 API] WINAPI - 함수호출규약

JAVA Frame Icon setting

JAVA Spinner