想象一下,我有一个JTree显示多个字符串 - 例如颜色列表。如何以不同的颜色/字体组合渲染这样的树?如何正确实现TreeCellRenderer?使用多种不同字体在JTree中渲染节点
谢谢你的帮助。
想象一下,我有一个JTree显示多个字符串 - 例如颜色列表。如何以不同的颜色/字体组合渲染这样的树?如何正确实现TreeCellRenderer?使用多种不同字体在JTree中渲染节点
谢谢你的帮助。
您可以扩展DefaultTreeCellRenderer。在调用super()的getTreeCellRendererComponent方法中,检查你的条件,例如通过分析价值。之后,相应地调用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。