Como mudar cor de uma celula usando JTable sem Cabeçalho?[RESOLVIDO]

7 respostas
Poneis123

Olá Pessoal,

Existe bastante informação sobre mudança de cor da celula usando o JTable, porém essas mudanças são para tabelas que tenham um cabeçalho, não é meu caso.

Criei uma tabela vazia (JTable table = new JTable(numLinhas, matrizString.length)) e conforme o usuario clica em um botao vou populando ela com alguns valores do matrizString utilizando (table.setValueAt(matrizString[i], num linha, numColuna)).

como faço para destacar esse valor que estou setando na tabela? precisaria modificar ou a cor do fundo ou alterar o estilo da fonte. Lembrando que minha tabela não possui cabeçalho.

Muito Obrigado.

7 Respostas

Ironlynx

Cara, tu precisa criar um renderer para pintar sua célula.Poderia por exemplo, implementar TableCellRenderer, ou extender DefaultTableCellRenderer e lá fazer a mudança de fonte, cor, background que vc quiser.Isso idependente de ter cabeçalho ou não
http://java.sun.com/docs/books/tutorial/uiswing/components/table.html#editrender

OBS.: Se a tabela for editável, vc tem que implementar o TableCellEditor editor também.

Poneis123

Valew Ironlynx, vo tenta.
Deixa eu pergunta tb, como faço para diminuir a largura de todas as colunas da minha tabela?

muito obrigado =)

T

Poneis123, pra reduzir a lagura da coluna eu uso o seguinte:

TableColumn coluna_1 = jTable.getColumnModel().getColumn(x);
        coluna_1.setPreferredWidth(y);

onde x é o número da coluna da tabela e y é o tamanho da lagura da coluna.

Espero ter ajudado.

Poneis123

Opa valew pela dica…
mas isto ai vai alterar de apenas 1 coluna, como faço para alterar todas? tem alguma forma direta? senão faço um for lá e diminuo de todas mas vai ficar meio feio né…

Valew.
Abraço

T

Automaticamente eu não sei se tem como.
O que você pode fazer é o seguinte:

TableColumn coluna_1 = jTable.getColumnModel().getColumn(0);   
coluna_1.setPreferredWidth(y);  
TableColumn coluna_2 = jTable.getColumnModel().getColumn(1);   
coluna_2.setPreferredWidth(y);  
TableColumn coluna_3 = jTable.getColumnModel().getColumn(2);   
coluna_3.setPreferredWidth(y);  
.
.
.
.

e assim por diante.

Poneis123

desta forma eu pensei em algo do tipo:

for(int i=0; i<numColunas; i++){
  TableColumn coluna = jTable.getColumnModel().getColumn(i);     
  coluna.setPreferredWidth(y);
}

será que funciona?

Valew!!>

T

Teoricamente deve funcionar sim.
Só testando pra ver
Boa sorte
Abraços

Criado 18 de abril de 2009
Ultima resposta 15 de mai. de 2009
Respostas 7
Participantes 3