JTable的Customrenderer被多次调用

时间:2015-12-04 09:14:25

标签: java swing jtable

我想基于其值为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;
}

1 个答案:

答案 0 :(得分:2)

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

因此您需要“其他条件”将背景设置为默认颜色。类似的东西:

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

您还可以查看Table Row Rendering以获得突出显示行背景的替代方法,这可能更简单,尤其是在每列中找到不同类型的数据时。