여러 줄을 표시하는 JTree가 있다고 가정 해 보겠습니다. 예를 들어 색상 목록이 그 예입니다. 다른 색상/글꼴 조합으로 트리를 렌더링하는 것이 어떻게 가능합니까? TreeCellRenderer를 올바르게 구현하는 방법여러 다른 글꼴로 JTree의 노드 렌더링
도움 주셔서 감사합니다.
여러 줄을 표시하는 JTree가 있다고 가정 해 보겠습니다. 예를 들어 색상 목록이 그 예입니다. 다른 색상/글꼴 조합으로 트리를 렌더링하는 것이 어떻게 가능합니까? TreeCellRenderer를 올바르게 구현하는 방법여러 다른 글꼴로 JTree의 노드 렌더링
도움 주셔서 감사합니다.
DefaultTreeCellRenderer를 확장 할 수 있습니다. getTreeCellRendererComponent 메소드에서 super()를 호출하고 조건을 확인합니다. 가치를 분석하여 그런 다음 setFont(), setBackground() 및 setForeground() 메서드를 적절하게 호출합니다.
또 다른 가능한 방법은 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에서 취한 것.