2013-06-14 2 views
0

jTree를 표시하는 응용 프로그램이 있습니다. 트리의 각 노드에는 사용자로부터주의를 요하는지 여부를 나타내는 flagged이라는 부울 필드가 있습니다.노드에 저장된 데이터에 따라 jtree의 특정 노드 강조 표시

필드가 true 인 경우 빨간색으로 강조 표시하고 싶으면 강조 표시를하고 싶습니다.

이것을 수행하는 좋은 방법은 무엇입니까? DefaultTreeCellRenderer을 연장해야합니까? 나만의 맞춤을 구현하십시오 TreeCellRenderer? 다른 방법?

답변

4

사용자 정의 렌더링은 매우 기본이기 때문에 DefaultTreeCellRenderer을 확장하고 getTreeCellRendererComponent 메서드를 재정의합니다. DefaultTreeCellRenderer이 사용하는 JLabel에서 전경색을 조정할 수 있습니다.

tree.setCellRenderer(new DefaultTreeCellRenderer() { 
    @Override 
    public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, 
               boolean leaf, int row, boolean hasFocus) { 
    JLabel label = (JLabel)super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus); 
    YourNode node = (YourNode)value; 
    if (node.isFlagged()) 
     label.setForeground(Color.RED); 

    return label; 
    } 
}); 

그리고 결과 : enter image description here

다음은 간단한 예제
관련 문제