come precedentemente detto devi crearti il tuo TableCellRenderer; nel seguente esempio specifico alle colonne 0 e 2 di cambiare il colore dello sfondo e del testo quando non sono selezionate. Inoltre specifico un diverso sfondo e colore del testo per le celle selezionate:
codice:
static class MyTableRenderer extends DefaultTableCellRenderer{
public Component getTableCellRendererComponent (JTable table, Object value, boolean selected,
boolean focused, int row, int column){
super.getTableCellRendererComponent(table, value, selected, focused, row, column);
Color c = table.getBackground();
if (!selected){
if(column==0||column==2){
setBackground(Color.red);
setForeground(Color.black);
}else{
setBackground(c);
setForeground(Color.black);
}
}else{
setForeground(Color.white);
setBackground(Color.blue);
}
return this;
}
}
il renderer deve poi essere assegnato alla table, io conosco solo due metodi:
o lo assegni ad ogni colonna:
codice:
tableRenderer tr = new tableRenderer();
for(int i=0; i<table.getColumnCount();i++){
table.setDefaultRenderer(table.getColumnClass(i), tr);
}
oppure lo assegni al tipo di oggetti presenti nella table:
codice:
table.setDefaultRenderer(Integer.class, mtr);
ciao