To show only a single row of JTable in a different color (background or foreground), create a custom table renderer that will initialize the colors before delegating work to the DefaultRenderer1)
private class RowColorRenderer extends DefaultTableCellRenderer { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { Object topVal=table.getValueAt(0,column); int i=0; if (topVal instanceof Integer) { i=((Integer)topVal).intValue(); } if (isSelected||(i==0)) { this.setBackground(Color.white); this.setForeground(Color.black); } else { this.setBackground(Color.red); this.setForeground(Color.white); } return super.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,column); } }
To set up the renderer for a table, use :
xt.setDefaultRenderer(java.lang.String.class,new RowColorRenderer());