Dúvida com JTable

5 respostas
T

Bom dia pessoal!

Estou aprendendo a trabalhar com uma JTable e estou com uma dúvida…

Fiz uma classe que extende de “DefaultTableCellRenderer” para poder pintar as linhas da minha tabela. O problema é que ele só está pintando as células que são do tipo “String”, como eu faço para pintar as outras também???

Obrigado!

5 Respostas

davidtiagoconceicao

Poste o código do seu renderer.

T

Esse problema foi resolvido!

Função 

<a class="mention" href="/u/override">@Override</a>

public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {

Component comp = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (row % 2 == 0) {
  comp.setBackground(Color.LIGHT_GRAY);
  comp.setForeground(Color.WHITE);
} else {
  comp.setBackground(Color.GREEN);
  comp.setForeground(Color.WHITE);
}



return comp;

}

[b]Na Chamada[/b]
              resultTable.setDefaultRenderer(String.class, render);
  resultTable.setDefaultRenderer(Date.class, render);
  resultTable.setDefaultRenderer(Integer.class, render);
T

Agora minha dúvida é outra:

Tenho que pintar as células de acordo com o conteúdo de uma das células. Esse campo é uma data e dependendo do valor que for informado pinto de uma cor ou de outra.

Como faço?

Obrigado!

davidtiagoconceicao

Se você quer que o renderer seja utilizado para todas as colunas, pode fazer assim também:

resultTable.setDefaultRenderer(Object.class, render);

Já tive que fazer algo semelhante e na época a solução foi verificar qual a cor deveria pintar a linha ao renderizar a primeira coluna, armazenar esta cor em um atributo do renderer e pintar todas as outras colunas com a mesma cor.

davidtiagoconceicao

Outra vez precisava tomar umas decisões mais complexas dentro do renderer e a solução foi fazer o model retornar um objeto com vários atributos (no getValueAt) e utilizar estes atributos dentro do renderer para tomar as decisões.
Acho que isso não é muito recomendado, mas na época precisava de uma solução rápida…

Criado 27 de fevereiro de 2009
Ultima resposta 27 de fev. de 2009
Respostas 5
Participantes 2