Ciao,
Mi sono costruito una JTable che contiene dei dati che vengono refreshati direttamente da DB on demand.
Questa tabella contiene dei risultati di schedulazioni ("success - no success") ed altri informazioni di contorno.
Tutti i no success sono colorati in arancione.
Come ultima colonna , ho un checkbox ("Ignore") che ignora il risultato della schedulazione e fa ridiventare la riga bianca.
A questa table ho applicato un rowsorter cosi da poter lavorare direttamente sull'ordinamento della tabella.
Ho applicato il renderer sottostante inoltre ho dovuto applicare il
int modelRow = table.getRowSorter().convertRowIndexToModel(row);
altrimenti le colorazioni sarebbero state falsate.
Il tutto funziona, ma appena applico il rowsorter applicato a qualunque colonna, il checkbox ignore non svolge più il suo compito e se tolgo il check non sbianchetta più la riga.
Cos'è che sbaglio?
Posto il renderer che può aiutarvi.
public class PanelRender extends DefaultTableCellRenderer {
public PanelRender(){
super();
setOpaque(true);
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
int modelRow = table.getRowSorter().convertRowIndexToModel(row);
Boolean b=(boolean)table.getModel().getValueAt(row, 6);
if(!b) {
int columnindex = 5;
String content = (String) table.getModel().getValueAt(modelRow, columnindex);
if(content.equalsIgnoreCase("no success")) {
this.setBackground(Color.ORANGE);
}
else {
this.setBackground(Color.WHITE);
}
}
else
this.setBackground(Color.WHITE);
return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
}
}
Grazie a chiunque possa suggerirmi un metodo per superare questo problema.