2011-02-09 5 views
0

여러 줄을 표시하는 JTree가 있다고 가정 해 보겠습니다. 예를 들어 색상 목록이 그 예입니다. 다른 색상/글꼴 조합으로 트리를 렌더링하는 것이 어떻게 가능합니까? TreeCellRenderer를 올바르게 구현하는 방법여러 다른 글꼴로 JTree의 노드 렌더링

도움 주셔서 감사합니다.

답변

2

DefaultTreeCellRenderer를 확장 할 수 있습니다. getTreeCellRendererComponent 메소드에서 super()를 호출하고 조건을 확인합니다. 가치를 분석하여 그런 다음 setFont(), setBackground() 및 setForeground() 메서드를 적절하게 호출합니다.

1

또 다른 가능한 방법은 TreeCellRenderer를 구현하는 내부 클래스를 만드는 것입니다. 그러면 JLabel을 원하는대로 사용자 정의 할 수 있습니다.

public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, 
     boolean expanded, boolean leaf, int row, boolean hasFocus) { 

    Component returnValue = null; 
    if ((value != null) && (value instanceof DefaultMutableTreeNode)) { 
     Object userObject = ((DefaultMutableTreeNode) value).getUserObject(); 
     if (userObject instanceof Employee) { 
     Employee e = (Employee) userObject; 
     firstNameLabel.setText(e.firstName); 
     lastNameLabel.setText(e.lastName); 
     salaryLabel.setText("" + e.salary); 
     if (selected) { 
      renderer.setBackground(backgroundSelectionColor); 
     } else { 
      renderer.setBackground(backgroundNonSelectionColor); 
     } 
     renderer.setEnabled(tree.isEnabled()); 
     returnValue = renderer; 
     } 
    } 
    if (returnValue == null) { 
     returnValue = defaultRenderer.getTreeCellRendererComponent(tree, value, selected, expanded, 
      leaf, row, hasFocus); 
    } 
    return returnValue; 
    } 

this site에서 취한 것.