Tenho uma JTable que extende AbstractTableModel.
Essa JTable é alimentada com dados e conforme o tipo deles, a cor da linha é setada. Por exemplo vermelho.
Porem, quando faço uma nova leitura a tabela não “repinta” as linhas de vermelho, como acontece na leitura inicial.
Tenho uma JTable que extende AbstractTableModel.
Essa JTable é alimentada com dados e conforme o tipo deles, a cor da linha é setada. Por exemplo vermelho.
Porem, quando faço uma nova leitura a tabela não “repinta” as linhas de vermelho, como acontece na leitura inicial.
Alguem já passou por esse problema?
Já fiz algo exatamente assim e não tive problemas.
Mas o que você quer dizer com “nova leitura”?
Seria depois de aberta a tela com JTable aí você digamos uma consulta pra tabela mostrar novos dados filtrados, e estes aí não vem coloridos?
mas pior que não tem muito mistério, depois de instanciada a JTable, o que eu sempre fazia durante as atualizações da tabela era sempre chamar o método:
você está chamando este método? senão faça isso ao final de cada operação que possa atualizar a JTable e vê se resolve.
J
juliospark
Isso, por exemplo: Quando clico no botão “Ler”, deve atualizar as cores das linhas, conforme minhas regras na classe que extende a TableCellRenderer
Pois é, já coloquei JTable.updateUI(), validate() e repaint();
Testei todos separados e até agora não consegui sucesso.
Preciso sobrescrever algum método na TableCellRenderer ou na AbstractTableModel?
J
Javabuntu
Isso, por exemplo: Quando clico no botão “Ler”, deve atualizar as cores das linhas, conforme minhas regras na classe que extende a TableCellRenderer
Pois é, já coloquei JTable.updateUI(), validate() e repaint();
Testei todos separados e até agora não consegui sucesso.
Preciso sobrescrever algum método na TableCellRenderer ou na AbstractTableModel?
na verdade eu fiz assim:
// durante os sets da minha JTable, um destes foi//Veja que DefaultTableCellRenderer() devolve um objeto DefaultTableCellRenderertable.setDefaultRenderer(Object.class,MyDefaultTableCellRenderer());
e dentro dessa mesma classe onde instanciei a JTable eu fiz um método pra devolver um DefaultTableCellRenderer onde eu implementei numa classe interna um método, veja:
privateDefaultTableCellRendererMyDefaultTableCellRenderer(){returnnewDefaultTableCellRenderer(){publicComponentgetTableCellRendererComponent(JTabletable,Objectobj,booleanisSelected,booleanhasFocus,introw,intcolumn){Componentrenderer=super.getTableCellRendererComponent(table,obj,isSelected,hasFocus,row,column);//Aqui minha regra de negócio pra aplicar coresStatusstatus=getStatus(row);//status.getRowColor() devolve uma cor de acordo com minhas regrassetBackground(status.getRowColor());returnrenderer;}};}
foi tudo que precisei fazer pra colorir, e para cada uma devolver uma cor diferente de acordo com as regras.
isso foi tudo que eu fiz
J
juliospark
Resolvi o problema, mas havia esquecido postar a solução.
Então, aqui está: