Java JTable的Customrenderer被调用多次

Java JTable的Customrenderer被调用多次,java,swing,jtable,Java,Swing,Jtable,我想根据JTable的值给它的某些行上色。但是我的customrenderer被调用了无限次,整个表被着色,而不是某些行 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,int row, int column) { Component c = render.getTableCellRendererComponen

我想根据JTable的值给它的某些行上色。但是我的
customrenderer
被调用了无限次,整个表被着色,而不是某些行

public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,int row, int column) 
{
    Component c = render.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);

    DefaultTableModel model = (DefaultTableModel)table.getModel();
    String flag = (String)model.getValueAt(row, 0);

    if(flag.equalsIgnoreCase("java"))
    {

        c.setBackground(new Color(0xE8F2FE)); //light blue
    }

    return c;
}

所有单元格都使用相同的渲染器。更改渲染器的背景后,该背景将用于所有单元格

因此,您需要一个“else条件”将背景设置为默认颜色。比如:

else
   c.setBackground( table.getBackground() );

您还可以查看另一种高亮显示行背景的方法,这种方法更简单,尤其是当在每列中发现不同类型的数据时。

请向我们展示您迄今为止的代码。您的意思是
super.getTableCellRenderComponent()
?是的。我是说super.getTableCellRenderComponent()