npm install primeicons --save
private class ColorRenderer extends DefaultTableCellRenderer
{
String[][] data;
public ColorRenderer(String[][] data)
{
this.data = new String[data.length][data[0].length];
for(int i = 0; i < data.length; i++)
{
for(int g = 0; g < data[0].length; g++)
{
this.data[i][g] = data[i][g];
}
}
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col)
{
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col);
if(row < data.length - 3 && data[row][col].equals(""))
{
c.setBackground(Color.LIGHT_GRAY);
}
return c;
}
}
是填充JTable的数据数组。该表主要是字符串,但是有一些空字符串。我想为仅包含空字符串但不包含最后三行的单元格上色。
但是由于某种原因,它目前在我的整个桌子上都是乱涂的,为什么?
答案 0 :(得分:2)
在对DefaultTableCellRenderer.getTableCellRendererComponent
的覆盖中,在if语句之后添加else部分:
if(row < data.length - 3 && data[row][col].equals(""))
c.setBackground(Color.LIGHT_GRAY);
else
c.setBackground(table.getBackground());
默认的表格单元格渲染器使用一个组件,该组件用于渲染每个单元格的内容。更改颜色后,它将保留该颜色,直到该颜色被明确更改为止。