Cara, voltando as dúvidas sobre o JTable, ainda trabalhando com cores, tenho uma coluna na qual sua primeira linha será um valor SIM ou NAO. Se o usuário escrever SIM nela, entao a cor da coluna inteira ficará verde por exemplo. Se ele escrever NAO, ou qualquer outra coisa, a cor da coluna ficará vermelha. Pois bem, eu escrevi o metdoo defautTableRender no construtuor da minha tabela.
Mas está acontecendo o seguinte: Qndo eu carrega minha Jtable, ele verifica o valor da primeira linha da coluna X e se for SIM ele me retorna certinho a cor. O problema está em qndo ocorre algum evento na tabela. Qndo a tabela chama o tableRenderer, ele simplesmente trata o valor como se fosse NAO, e a cor fica amarela, mesmo o vlaor da celula sendo SIM. Aonde estou errando?
tabela.setDefaultRenderer(Object.class, new DefaultTableCellRenderer(){
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if(row == 0){
if(column == 21 || column == 22 || column == 23 || column == 24 || column == 25 || column == 26){
setBackground(Color.yellow);
}
else{
setBackground(new Color(238,238,238));
}
}else if(row == 1){
if(column == 4 )
setBackground(new Color(165,255,165));
else if(column == 10 || column == 11 || column == 39 || column == 40 || column == 41)
setBackground(new Color(165,255,165));
else if(column == 21 || column == 22 || column == 23 || column == 24 || column == 25 || column == 26)
setBackground(Color.cyan);
else
setBackground(new Color(238,238,238));
/*
É AQUI QUE TRATA A COLUNA ONDE ESTOU TENDO O PROBLEMA OBSERVE QUE FAÇO A VERIFICAÇÃO SE O VALOR DA CELULA 1-4 É IGUAL A 'SIM'. O PROBLEMA ESTÁ QNDO ACONTECE ALGUM EVENTO NA TABELA. QNDO O TABLERENDERER É CHAMADO NOVAMENTE, ELE PARECE NÃO ENTENDER ESSA CONVERSAO PARA STRING QUE FAÇO.
*/
}else if(column == 4){
System.out.println(table.getValueAt(1, 4));
if((String) table.getValueAt(1, 4) == "SIM" || table.getValueAt(1, 4) == "SIM" || table.getValueAt(1, 4).toString() == "SIM")
setBackground(Color.cyan);
else
setBackground(Color.pink);
}else if (column == 10){
setBackground(new Color(255,255,191));
}else if (column == 11){
setBackground(new Color(204,255,204));
}else if (column == 36) {
setBackground(new Color(255,255,191));
}else{
setBackground(null);
}
return this;
}
});