简体   繁体   English

TreeCellRenderer:如何设置背景颜色?

[英]TreeCellRenderer: how to set background color?

I've written a custom TreeCellRenderer in order to change a components appearance. 我编写了一个自定义的TreeCellRenderer来更改组件外观。 Everything works fine, except that setBackground has no effect. 一切正常,除了setBackground无效。 The code is definitely executed as the foreground color always changes correctly. 代码肯定会执行,因为前景色始终会正确更改。 Since selected items are rendered in blue and deselected item in white (without having written that code myself), I assume that my changes are overridden by JTree. 由于所选项目以蓝色呈现并且取消选择白色项目(没有自己编写该代码),我认为我的更改被JTree覆盖。 So what would be the proper way to change the background color? 那么改变背景颜色的正确方法是什么?

This is essentially my code: 这基本上是我的代码:

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; 
    }
}

尝试添加对c.setOpaque(true)的调用。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM