[j2se] JTable + TableModel

7 respostas
samirrolemberg

estou montando uma aplicação que usa JTable como forma de exibir dados de uma consulta.

estou tentando seguir o modelo deste tópico: http://www.guj.com.br/posts/list/149034.java#808003

pois, dentre os encontrados aqui foi o que eu achei mais simples.

até aonde eu entendi do codigo, não fiz nada de muito diferente.

no caso, apenas alterei a forma de repassar os dados de List para ArrayList direto.

em todo caso, montei a consulta do banco (DAOXXX) que filtrou os dados e repassou os dados no formato certo para a tela (controle)

e que retornou para a tela a lista de Funcionarios para ser repassada para o table model.

a consulta funciona normalmente, mas ao repassar a lista já preenchida para o tablemodel, ele acusa null pointer exception para o atributo do tablemodel.

tentei dar new dentro do proprio botão de ação da tela, mas a JTable não foi alterada.

alguem sabe o que está acontecendo?

postarei os arquivos da tela e do tablemodel anexados ao post, pois ficaram muito grandes.

7 Respostas

E

Dica: use o GlazedLists ( http://publicobject.com/glazedlists/ ). Ele resolve uma boa parte dos seus problemas.

samirrolemberg

sinceramente não me enche os olhos estudar outro codigo/api/frameworlk/queseja

prefiro a solução do que foi postado.

mas, vou dar uma olhada em ultimo caso.

de que forma esse que vc postou trrabalha?

samirrolemberg

bom, acho que eu consigo o resultado desejado com o Default Table Model

mas, vou acabaer escrevendo algo da modelagem (desnecessario) na visão.

alguem sugere?

Marck

Olá!

Voce está chamando este construtor:

public GerenciarFuncionarioTableModel(ArrayList<Funcionario> lista) {
		// TODO 	public GerenciarFuncionarioTableModel(ArrayList<Funcionario> lista)
		funcionario.addAll(lista);
}

??

Se sim, o arrya funcionario está nulo e voce está tentando chamar o metodo addAll.

Teria que ser assim:

public GerenciarFuncionarioTableModel(ArrayList<Funcionario> lista) {
		// TODO 	public GerenciarFuncionarioTableModel(ArrayList<Funcionario> lista)
		funcionario = lista;
}
samirrolemberg

bom eu alterei, mas não obtive resultados.

eu testei a consulta. e está funcionando.

mapei os dados atraves das camadas pra ver até aonde ia.

a lista chega preenchida até a tela.

mas o componente do JTable não altera.

A tela inicia assim:

e a consulta funciona normalmente (eu testei pelo console)

mas, o JTable não responde a consulta.

Marck

olá samirrolemberg

Eu dei uma olhada na tela, e não encontrei onde você passa o model para a sua tabela. Você está fazendo isso?

Também, depois de passar a lista para o model, chame o metodo fireTableDataChanged() no model e force um repaint na JTable.

samirrolemberg

não é isto aqui da linha 41?

private GerenciarFuncionarioTableModel modelo = null;

e da linha 201

private JTable getTabelaResultado() { if (tabelaResultado == null) { tabelaResultado = new JTable(modelo); } return tabelaResultado; }

?

Criado 26 de maio de 2010
Ultima resposta 1 de jun. de 2010
Respostas 7
Participantes 3