Use a customized TableCellRenderer to do something different when the cell is selected.
http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#renderer
Looking at the code from the above example you can see how you would need to look at the isSelected
boolean parameter.
public Component getTableCellRendererComponent(
JTable table, Object color,
boolean isSelected, boolean hasFocus,
int row, int column) {
Color newColor = (Color)color;
setBackground(newColor);
if (isBordered) {
if (isSelected) {
...
//selectedBorder is a solid border in the color
//table.getSelectionBackground().
setBorder(selectedBorder);
} else {
...
//unselectedBorder is a solid border in the color
//table.getBackground().
setBorder(unselectedBorder);
}
}
However, in your implementation just extend DefaultTableCellRenderer
and call super() version of getTableCellRendererComponent
first and just change the cell color.