为了改变组件的外观,我编写了一个自定义的TreeCellRenderer。一切都很好,除了setBackground没有任何效果。因为前景色总是正确地改变,所以代码肯定会被执行。由于选中的项以蓝色呈现,取消选中的项以白色呈现(无需自己编写代码),因此我假定JTree覆盖了我的更改。那么改变背景颜色的正确方法是什么呢?
这基本上是我的代码:
JTree tree = new JTree();
tree.setCellRenderer(new MyCellRenderer());
///////
public class MyCellRenderer extends DefaultTreeCellRenderer{
@Override
public Component getTreeCellRendererComponent(JTree tree, Object value,
boolean isSelected, boolean expanded, boolean leaf, int row,
boolean hasFocus) {
JComponent c = (JComponent) super.getTreeCellRendererComponent(tree, value, isSelected, expanded, leaf, row, hasFocus);
DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
MyData data = (MyData)node.getUserObject();
if(data.isX()){
c.setForeground(Color.blue);
c.setBackground(Color.gray);
}
return c;
}
}发布于 2013-05-12 02:35:51
尝试添加对c.setOpaque(true)的调用。
https://stackoverflow.com/questions/16500414
复制相似问题