【发布时间】:2012-02-21 12:21:09
【问题描述】:
我正在使用下面这段代码:
class CountryTreeCellRenderer implements TreeCellRenderer {
private JLabel label;
CountryTreeCellRenderer() {
label = new JLabel();
}
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
Object o = ((DefaultMutableTreeNode) value).getUserObject();
if (o instanceof Country) {
Country country = (Country) o;
label.setIcon(new ImageIcon(country.getFlagIcon()));
label.setText(country.getName());
} else {
label.setIcon(null);
label.setText("" + value);
}
return label;
}
}
由于我正在传递/返回标签,因此在选择 JTree 中的任何组件时,不会出现选择颜色。
我尝试使用:
JComponent comp = (JComponent) super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);
comp.setOpaque(true);
if(selected)
comp.setBackground(Color.RED);
但是如果我返回comp,那么树的输出不会像预期的那样出现。
如何解决?
我没有为此实现任何编辑器。
【问题讨论】:
-
如需尽快获得更好的帮助,请发帖SSCCE。
-
+1 for not 扩展组件 :-) 渲染器的工作是根据传递的参数配置渲染组件的视觉属性(如字体和颜色) - 进入 getXXRenderingComponent
标签: java swing jtree cellrenderer