Olá…
Qual seria a maneira correta de implementar um CellRenderer sendo q preciso pintar a linha se o valor da segunda coluna for "Debito"
obs.: preciso pintar a linha inteira e não somente uma célula…
pra pintar a célula:
public Component getTableCellRendererComponent(
JTable table, Object value,
boolean isSelected, boolean hasFocus,
int row, int column){
if (value.toString().equals("Debito")) {
this.setBackground(Color.red);
this.setForeground(Color.black);
}else {
this.setBackground(defaultBG);
this.setForeground(defaultFG);
}
this.setText(value.toString());
return this;
}
assim só a célula correspondente ao valor é pintada, mas preciso pintar a linha inteira que contém este valor
desde já obrigado…
eu consigo pintar a linha inteira, mas não a partir deste teste do débito..
eu posso implementar um CellRenderer criando um metodo onde eu passo a linha desejada e pintá-la, mas creio q assim não seja uma forma muito eficiente..
e o método colorirCelula seria chamado externamente para pintar uma linha somente (aí eu faço o teste do debito)..
só q desta forma o CellRenderer passaria por todas as linhas pra pintar somente uma, o q não é nada bom..
M
miguel.satriani
eu passaria diretamente um objeto no método getValueAt dai no renderer seria só verificar,
e caso o objeto fosse grande demais eu criaria um menor para utilizar ali e/ou em outras tabelas tambem…
erico_kl
mas o método getTableCellRendererComponent já tem o objeto que retorna de getValueAt… é o parametro ‘Object value’ da assinatura…
desculpa se não entendi sua colocação…
erico_kl
o ideal ainda seria fazer o CellRenderer passar uma vez para cada linha e não uma vez para cada célula…