Alternar colores Jtable segun valor
Publicado por Rkl (1 intervención) el 20/05/2015 12:14:26
Buenos dias,
Debo crear una tabla que recoge los datos de una base de datos mysql. Hasta aquí sin problema. Ahora se pide que se coloreen las filas segun el valor de una columna, para diferenciar que filas corresponden a ese valor.
Es decir, cuando cambie de valor, cambiará de color. Las siguientes filas mantendrán ese color mientras sea el mismo valor. Cuando de nuevo haya un valor distinto en la columna, volverá al primer color, alternando asi dos colores.
Lo intenté con DefaultTableCellRenderer, pero solo consigo que coloree la primera fila que encuentra un cambio...
Alguna idea?
Gracias a todos!
Debo crear una tabla que recoge los datos de una base de datos mysql. Hasta aquí sin problema. Ahora se pide que se coloreen las filas segun el valor de una columna, para diferenciar que filas corresponden a ese valor.
Es decir, cuando cambie de valor, cambiará de color. Las siguientes filas mantendrán ese color mientras sea el mismo valor. Cuando de nuevo haya un valor distinto en la columna, volverá al primer color, alternando asi dos colores.
Lo intenté con DefaultTableCellRenderer, pero solo consigo que coloree la primera fila que encuentra un cambio...
Alguna idea?
Gracias a todos!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
@Override
public Component getTableCellRendererComponent ( JTable table, Object value, boolean selected, boolean focused, int row, int column )
{
table.setForeground(Color.black); //color de texto
setOpaque(true);
super.getTableCellRendererComponent(table, value, selected, focused, row, column);
//si es la primera fila
if(row==0){
color=Color.white;
}else{
Component comp=table.getComponentAt(row-1, columna_patron);
//Si la celda NO es igual al anterior, se cambia el color
if( (table.getValueAt(row,columna_patron).equals(table.getValueAt(row-1,columna_patron))) ) {
//si el valor es igual
if(comp.getBackground().equals(Color.white)){
setBackground(Color.WHITE);
}else{
setBackground(gris);
}
//si NO es igual
}else{
if(comp.getBackground().equals(Color.white)){
setBackground(gris);
}else{
setBackground(Color.white);
}
}
}
Valora esta pregunta


0