Ola,
Cara eu tenho um CellRenderer aqui
package x.y.z.common.components.table.color;
import java.awt.Color;
import java.awt.Component;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* @author Guilherme Keller
*/
public class ColorCellRenderer extends DefaultTableCellRenderer {
public static final int R = 206;
public static final int G = 255;
public static final int B = 221;
private static final long serialVersionUID = 433648737270300478L;
private static final Log log = LogFactory.getLog(ColorCellRenderer.class);
private Color color;
public ColorCellRenderer(){
super();
log.info("ColorCellRenderer::constructor");
}
public ColorCellRenderer(Color color){
super();
this.color = color;
}
@Override
public Component getTableCellRendererComponent( JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column ) {
if( row%2 != 0 ){
this.setBackground( new Color(R,G,B) );
}else{
this.setBackground(Color.WHITE);
}
if(this.color != null){
this.setBackground( this.color );
}
return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
}
public void validate() {}
public void revalidate() {}
}
Que ele ja esta aplicado na table, e conforme a necessidade eu seto outros renderers+editors, como para colunas com checkbox, combobox, campo de data, campo cpf, etc…
Porem esse e um caso em que eu gostaria de uma solucao mais elegante do que sobrescrever o CellRenderer.
O grande problema e que a JTable trabalha com colunas.
Se voce pegar a implementacao do metodo getCellRenderer(row, col) voce ve que ele desconsidera a linha e leva em consideracao apenas coluna.
Ainda procuro uma solucao mais elegante que sobrescrever o CellRenderer imagine se cada caso eu terei que escrever um CellRenderer ficara realmente bem complicado o desenvolvimento…
Mas valeu pela ajuda! :thumbup: