Aplicar TableCellRenderer apenas pra uma celula, tem como?
12 respostas
yurifw
eu tenho uma JTable, e usei um TableCellRenderer pra mostrar um icone em uma coluna.
meu problema é o seguinte:
eu preciso que quando o usuario aperte um botão, o icone da celula selecionada mude. eu não to conseguindo “atualizar” a celula, o meu metodo de mudar o icone esta funcionando, se eu usar um JOptionPane pra mostrar o icone ele aparece o icone certo, o que eu preciso é enviar esse icone pra celula, depois que eu inicio a tabela com akele CellRenderer eu ja n consigo mudar o que aparece la, tem algum jeito de fazer isso?
o que eu pensei seria usar uma instancia nova do CellRenderer diferente pra cada celula, por exemplo, qdo o usuario cliclar no botão eu faço uma nova instancia do CellRenderer com o icone novo e coloco esse CellRenderer so naquela celula, mas como faz isso?
muito obrigado xD
ah, e se alguem souber de um tutorial bom sobre CellRenderer e tiver como postar o link aki tb eu agradeço muito.
O TableCellRenderer desenha um valor que está na tabela.
Faça-o desenhar com base no valor da coluna, que é fornecido pelo model. Quando o valor mudar, atualize o model e dispare um evento de tableCellChanged para aquela celula.
yurifw
o meu tableCellRenderer esta desenhando com o valor que eu passo na instancia dele, como faço pra fazer ele desenhar de acordo com o valor fornecido?
eu sei mto pouco de tableCell, isso foi o que eu consegui lendo alguns posts aki do forum, mas n achei nenhum tutorial que tivesse o que eu precisava ^^"
ViniGodoy
Está vendo ali que um dos parâmetros recebidos no método getTableCellRendererComponent é o value?
Esse é o value que está na célula sendo desenhada. Basta usa-lo.
yurifw
mas eu so to conseguindo passar o icone quando eu instancio o Renderer, então como q eu vou usar o parametro?
Agora é só fazer seu model retornar o nome do arquivo de recursos na coluna do ícone.
yurifw
cara, sem querer se chato nem nada, mas é q ta dando erro no codigo ^^"
na linha 13 (ta falando q n declarou a variavel)
e na linha 16 ta pedindo como parametro uma String e um Icon, ta dizendo q so achou a string, eu n mechi pq entendi mta pouca coisa do codigo
devo estar chato pra caramba ja, perdão ^^"
ViniGodoy
E você não conseguiu deduzir você mesmo o que estava errado?
Bom, já corrigi o código lá em cima…
Fiz de cabeça, por isso os erros.
yurifw
eu sabia o q tava errado, so n sabia consertar ^^"
yurifw
n, eu sabia o q tava errado mas eu n consegui resolver ^^"
Só lembre-se de dar um "fireTableCellUpdated" sempre que a célula tiver que mudar.
E também troque a class da sua coluna de String.class para Nivel.class. Aí vc pode até associar o renderer a sua tabela com:
seuTable.setDefaultRenderer(Nivel.class, new NivelCellRenderer());
yurifw
cara, n teve jeito, n consegui, tentei tudo q vc disse mas n resolveu, agora nem o icone aparece mais na tabela =/
vou ter que me contentar em usar texto mesmo =/
foi mal desperdiçar seu tempo