Colorir apenas uma célula do JTable.  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
Ricardo Siqueira
JavaGuru
[Avatar]

Membro desde: 27/03/2006 09:22:41
Mensagens: 200
Offline

Já virei e revirei jamanac e a API do JTable.
Vi um tal de GetCellRenderer mas foi o mais próximo a que cheguei.
Não é possível que algo tão simples seja tão complicado de fazer.
O que quero é colorir (ou não) uma célula da minha JTable de acordo com um teste condicional. Mas o setBackground() pinta a tabela inteira.

Alguma luz?

Você está na profissão errada. È a resposta mais provável.
[MSN]
leonschm
HelloWorld

Membro desde: 05/07/2005 08:57:11
Mensagens: 13
Offline

ve se te ajuda

[Email]
leonschm
HelloWorld

Membro desde: 05/07/2005 08:57:11
Mensagens: 13
Offline

ou então esse aqui é melhor
[Email]
Ricardo Siqueira
JavaGuru
[Avatar]

Membro desde: 27/03/2006 09:22:41
Mensagens: 200
Offline

Então...eu ja tinha visto esse exemplo. Mas ele transforma a célula em um botão como percebi.
Não quero fazer isso. Essa célula não será editável e a cor será alterada apenas uma vez quando a JTable for iniciada.
Mas to tentando abstrair daí de dentro uma forma de fazer isso...sem precisar usar uma célula como botão

Você está na profissão errada. È a resposta mais provável.
[MSN]
Ricardo Siqueira
JavaGuru
[Avatar]

Membro desde: 27/03/2006 09:22:41
Mensagens: 200
Offline

Minha ultima resposta foi pro primeiro código...não tinha visto o segundo =)

Você está na profissão errada. È a resposta mais provável.
[MSN]
Ricardo Siqueira
JavaGuru
[Avatar]

Membro desde: 27/03/2006 09:22:41
Mensagens: 200
Offline

Ent~so...é o seguinte.
Ao inicializar a tabela eu quero que ele coloque os valores(até aí normal) a fonte em que serão exibidos os valores(normal) e a cor de cada célula baseada num teste if.
Como é um relatório de entrada e saída de funcionários seria por exemplo um verde se ele fez hora extra e um vermelho se ele chegou atrasado. Este teste if tá pronto...o problema é seta a cor da tabela.
E mais...essa tabela NÃO é editavel por isso a celula não poderia ser um botão.

Você está na profissão errada. È a resposta mais provável.
[MSN]
Ricardo Siqueira
JavaGuru
[Avatar]

Membro desde: 27/03/2006 09:22:41
Mensagens: 200
Offline

Continuo tentando solucionar este problema

Alguém pode ao menos me dar uma luz de algo que poderia solucionar este problema?
To tentando usar esses exemplos aí de cima e no lugar de um botão criando um JLabel mas não tá dando mto certo to trabalhando nisso se der certo posto o código aqui.
Mas alguém sabe de outro jeito? Preciso mesmo criar subclasses?

Você está na profissão errada. È a resposta mais provável.
[MSN]
Ricardo Siqueira
JavaGuru
[Avatar]

Membro desde: 27/03/2006 09:22:41
Mensagens: 200
Offline

Ninguém?
Help!

Você está na profissão errada. È a resposta mais provável.
[MSN]
Ricardo Siqueira
JavaGuru
[Avatar]

Membro desde: 27/03/2006 09:22:41
Mensagens: 200
Offline

Continuo sem conseguir resolver este problema.
Alguém tem alguma dica?

Você está na profissão errada. È a resposta mais provável.
[MSN]
fredferrao
GUJ Master
[Avatar]

Membro desde: 01/06/2005 13:23:32
Mensagens: 1901
Localização: Brasil
Offline

Gerenciando por completo uma JTable:

TableModel:


ColumnModel


CellRenderer


e HeaderRenderer


agora faça o que quiser com os Titulos, celulas e etc!!!

Não respondo dúvidas via MP!
Ricardo Siqueira
JavaGuru
[Avatar]

Membro desde: 27/03/2006 09:22:41
Mensagens: 200
Offline

PERFEITO!!! um label na célula, daí eu só mudo a cor do label!!!


Mas vem ca isso não fica pesado demais? Tenho tabelas aqui de tipo 2000 linhas....fico imaginando a quantidade de labels que serão gerados...
Muitos componentes num mesmo frame podem deixar o programa pesado?

Você está na profissão errada. È a resposta mais provável.
[MSN]
dsfextreme
JavaTeenager
[Avatar]

Membro desde: 12/06/2005 13:29:13
Mensagens: 169
Localização: Belo Horizonte
Offline

Ricardo Siqueira wrote:PERFEITO!!! um label na célula, daí eu só mudo a cor do label!!!


Mas vem ca isso não fica pesado demais? Tenho tabelas aqui de tipo 2000 linhas....fico imaginando a quantidade de labels que serão gerados...
Muitos componentes num mesmo frame podem deixar o programa pesado?


Mas vc vai mostrar os 2000 de uma vez?
Limita seu jtable a mostrar apenas o 100 primeiros talvez....
Um abraço !


[Email]
dsfextreme
JavaTeenager
[Avatar]

Membro desde: 12/06/2005 13:29:13
Mensagens: 169
Localização: Belo Horizonte
Offline

Ricardo Siqueira wrote:PERFEITO!!! um label na célula, daí eu só mudo a cor do label!!!


Mas vem ca isso não fica pesado demais? Tenho tabelas aqui de tipo 2000 linhas....fico imaginando a quantidade de labels que serão gerados...
Muitos componentes num mesmo frame podem deixar o programa pesado?


Cara achei um código aqui que vai ser bala para o que vc quer,rodei ele aqui e funcionou blz vou colocá-lo para vc testar,os números negativos ficam em vermelho.

São tres classes....








Depois vc fala ae se ajudou .....Um abraço !


[Email]
fredferrao
GUJ Master
[Avatar]

Membro desde: 01/06/2005 13:23:32
Mensagens: 1901
Localização: Brasil
Offline

Não, não fica pesado não!!! eu ja testei com até 100.000 registros(mostrando 2 campos) e o que gastou mais tempo foi o select do banco, a table ficou normal!!!

E outra coisa, é exatamente assim, com essas classes que a JTable trabalha, so que escondido!!, nesse exemplo vc apenas escreveu suas proprias renderers e falou pra table usa-las!!!

Não respondo dúvidas via MP!
tonybignardi
Smalltalk
[Avatar]

Membro desde: 11/06/2008 11:14:25
Mensagens: 4
Offline


.

This message was edited 1 time. Last update was at 23/06/2008 15:22:40

 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team