public class ImportTableRenderer extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent(
JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column) {
ImportTableModel model = (ImportTableModel) table.getModel();
Vector<Import> list = model.getTable();
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (row >= list.size()) {
return this;
}
Import im = list.get(row);
if (im.getEstado().toUpperCase().equals("GERADO") || im.getEstado().toUpperCase().equals("ASSOCIADO")) {
c.setBackground(Color.RED);
c.setForeground(Color.WHITE);
//setValue(value);
return c;
} else {
setBackground(null);
setValue(value);
return this;
}
}
}
//minha chamada na classe principal ficou assim:
for(int i=0;i<jTable1.getColumnCount();i++){
jTable1.getColumnModel().getColumn(i).setCellRenderer(new ImportTableRenderer());
}
Pintar linhas da JTable
4 Respostas
Não faltou setar o foreground no else? Senão a letra vai ficar branca. E o que é aquele setBackground(null) ali?
Eu vi em um outro tópico que o setBackground(null) tornaria a linha branca.
É realmente ficou faltando eu escrever o setForeground.
E era exatamente isto que ficou faltando para ele funcionar.
O problema agora é que ele esta gerando um java.lang.ArrayIndexOutOfBoundsException: 4 >= 3
Mas isto não é em nenhuma classe que eu implementei. Vou colar aqui o Stacktrace:
Cara, não usa DefaultTableModel não, veja na minha assinatura e na do Vini como se livrar disso.
Tipo, não estou utilizando o DefaultTableModel mas sim O DefaultTableColunmModel…pois tentei implementar um ColunmModel para a remoção de colunas e não obtive muito sucesso, no entanto com o DefaultTableColunmModel
ele deleta colunas numa boa…pelo menos até agora quando gerou essa exception.
O que devo fazer para corrigir?