我需要突出显示 JTable 中选定行的颜色。我为此使用自己的 CellRenderer,它可以工作,但是当我选择另一行时,前一行仍然突出显示。这个想法是仅将选定的颜色保留为蓝色,并将其他颜色保留为原始颜色。另外,我正在制作对列:灰色和非对:白色,所以这是 CellRenderer 的代码
private class Renderer extends DefaultTableCellRenderer
{
private static final long serialVersionUID = 1L;
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus,
int row, int column)
{
super.getTableCellRendererComponent(table, value, isSelected,
hasFocus, row, column);
int columnIndex = table.getSelectedColumn();
int rowIndex = table.getSelectedRow();
if (columnIndex != -1 && rowIndex != -1){
this.setBackground(Color.BLUE);
} else {
if (row % 2 == 0) this.setBackground(Color.decode("0xF9F9F9"));
else this.setBackground(Color.decode("0xF1F1F1"));
}
return this;
}
}
编辑: F1F1F1 是一种接近于白色的颜色,而 F9F9F9F9 是一种浅灰色