JTable

2 respostas
Z

Bom dia,

Estou criando uma tela que possui um JTable para listar as linhas lidas de uma planilha Excel que contém duas colunas.

Para essa JTable, estou utilizando o DefaultTableModel, mas vi que é possível criar um TableModel de maneira que atenda a minha necessidade, uma das minhas necessidades é a seguinte:

  1. A JTable terá 4 colunas sendo a primeira do tipo numérico, as duas posteriores string e a última imagem.
  2. Para o campo de imagem, será exibida uma imagem diferente para cada status que eu encontrar para os demais campo, no geral serão utilizadas apenas duas imagem.

Minha dúvida está em como montar esse TableModel, como setar qual imagem devo exibir no momento em que inserir a linha no JTable e onde deixar essas imagem em minha aplicação de forma que possa distribuir ela junto com a aplicação quando gerar o executável.

Poderiam meu orientar?

Obrigado.

2 Respostas

R

Sugestão: não baseie seu TableModel sobre DefaultTableModel. Creio que você vai conseguir resultados melhores sobre AbstractTableModel.

Para caracterizar os tipos de dados das colunas, sobreponha o método TableModel.getColumnClass(), e certifique-se de retornar valores adequados a esses tipos em TableModel.getValueAt().

Para exibir imagens na quarta coluna, use um Renderer especializado:
http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#renderer

Você pode empacotar as imagens juntamente com suas classes e carregá-las em tempo de execução:
http://docs.oracle.com/javase/tutorial/uiswing/components/icon.html#getresource

F

Os métodos getColumnClass e getValueAt resolvem essas questões.
No getColumnClass você apenas retorna a classe correta pra cada coluna e no getValueAt, na coluna da imagem, você faz uma checagem desse status e exibe a imagem correta.

Leia o link na minha assinatura pra tu entender como implementar.

Criado 28 de junho de 2012
Ultima resposta 29 de jun. de 2012
Respostas 2
Participantes 3