2013-05-11 11 views
3

Я написал собственный TreeCellRenderer, чтобы изменить внешний вид компонентов. Все работает нормально, за исключением того, что setBackground не действует. Код определенно выполняется, так как цвет переднего плана всегда изменяется правильно. Поскольку выбранные элементы отображаются синим цветом и отменены выделенным элементом в белом (без написания этого кода), я предполагаю, что мои изменения переопределены JTree. Итак, каков был бы правильный способ изменить цвет фона?TreeCellRenderer: как установить цвет фона?

Это, по существу мой код:

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

ответ

Смежные вопросы