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.
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 ^^"
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.
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
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:
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