2011-01-09 2 views

답변

5

사용자 정의 TreeCellRenderer 구현 - 구성 요소에 JLabel을 사용하고 트리에 저장된 오브젝트의 데이터를 사용하되 아이콘을 설정하십시오. 객체가 사용자 정의 TreeCellRenderer에 대한 대안으로 (예를 들어 문자열)

http://download.oracle.com/javase/7/docs/api/javax/swing/tree/TreeCellRenderer.html http://www.java2s.com/Code/Java/Swing-JFC/TreeCellRenderer.htm

+0

감사합니다. 정확히 내가 원하는 것입니다. – Soulou

8

원시적 인 경우 등 그 깊이를 저장하는 객체를 포장해야합니다, 당신은의 UI 기본값을 대체 할 수 collapsedIconexpandedIcon :

:

Icon expanded = new TreeIcon(true, Color.red); 
Icon collapsed = new TreeIcon(false, Color.blue); 
UIManager.put("Tree.collapsedIcon", collapsed); 
UIManager.put("Tree.expandedIcon", expanded); 

TreeIcon 단순히 Icon 인터페이스의 구현

class TreeIcon implements Icon { 

    private static final int SIZE = 14; 
    private boolean expanded; 
    private Color color; 

    public TreeIcon(boolean expanded, Color color) { 
     this.expanded = expanded; 
     this.color = color; 
    } 

    //@Override 
    public void paintIcon(Component c, Graphics g, int x, int y) { 
     Graphics2D g2d = (Graphics2D) g; 
     g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 
      RenderingHints.VALUE_ANTIALIAS_ON); 
     g2d.setPaint(color); 
     if (expanded) { 
      g2d.fillOval(x + SIZE/4, y, SIZE/2, SIZE); 
     } else { 
      g2d.fillOval(x, y + SIZE/4, SIZE, SIZE/2); 
     } 
    } 

    //@Override 
    public int getIconWidth() { 
     return SIZE; 
    } 

    //@Override 
    public int getIconHeight() { 
     return SIZE; 
    } 
} 
+1

안녕하세요, 그 쓰레기를 가져 주셔서 감사합니다. – hamo

관련 문제