하지만, 그건에 따라 내가 뭘 찾고 있는지.변경의 JTree 노드 아이콘 깊이 내의 JTree의 (스윙)</p> <p>자바 문서는 노드가 잎인지 아닌지 아이콘을 변경하는 방법에 대해 설명을 다른 아이콘을 변경을 찾고 수준
노드가 리프인지 또는 노드가 세 번째 노드의 첫 번째/두 번째/세 번째 심도 수준에 있으면 아이콘을 변경하고 싶습니다.
하지만, 그건에 따라 내가 뭘 찾고 있는지.변경의 JTree 노드 아이콘 깊이 내의 JTree의 (스윙)</p> <p>자바 문서는 노드가 잎인지 아닌지 아이콘을 변경하는 방법에 대해 설명을 다른 아이콘을 변경을 찾고 수준
노드가 리프인지 또는 노드가 세 번째 노드의 첫 번째/두 번째/세 번째 심도 수준에 있으면 아이콘을 변경하고 싶습니다.
사용자 정의 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
원시적 인 경우 등 그 깊이를 저장하는 객체를 포장해야합니다, 당신은의 UI 기본값을 대체 할 수 collapsedIcon
및 expandedIcon
:
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;
}
}
안녕하세요, 그 쓰레기를 가져 주셔서 감사합니다. – hamo
감사합니다. 정확히 내가 원하는 것입니다. – Soulou