2011-02-23 87 views
2

我想实现一个JTable组件的tablecellrenderer,它应该根据单元格数据显示不同的颜色。我得到了这个,但我不能改变所选单元格的颜色。我试着这样做:TableCellRenderer选中的单元格问题

public Component getTableCellRendererComponent(JTable table, Object value, 
     boolean isSelected, boolean hasFocus, int rowIndex, int vColIndex) 
{ 

    if (isSelected) { 
     this.setBackground((Color)UIManager.get("Table.selectionBackground")); 
     this.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); 
    } else { 
     this.setForeground((Color)UIManager.get("Table.foreground")); 
     this.setBackground((Color)UIManager.get("Table.background")); 
     this.setBorder(BorderFactory.createEmptyBorder()); 
    } 
... 
} 

,但它不工作:S ..我看不到的问题,因为JTable中没有显示出什么不同,当我点击一个单元格。

回答

2

我想实现一个JTable组件的的TableCellRenderer,它应该表现出依赖于细胞的数据

您发布并没有这样做的代码不同的颜色。基本上所有代码都会重复渲染器的默认行为

您可能会发现Table Row Rendering方法更容易实现。

0

假设您使用JLabel作为组件的基础,除非您还将opaque设置为true,否则设置背景将不起作用。 JLabels默认为不透明,所以不要绘制背景。