[Resolvido] Como realizar persistencia no banco e atualizar JTable?

Olá a todos,

Gostaria da ajuda de vocês para a seguinte situação:

Tenho um JDialog com um JTable que exibe os clientes do banco. Este JDialog possui alguns botões como incluir, alterar e excluir.
Ao selecionar uma das opções, é exibido outro JDialog para realizar a operação de acordo com a opção selecionada e realizar a persistência no banco.
Eu gostaria de saber como fazer para ao persistir um registro no banco (inclusão, alteração ou remoção) fazer com que o JTable atualize…

Obs.: Possuo uma classe que estende AbstractTableModel.

Obrigado pessoal.

Limpar e chamar o metodo que preenche sua Tabela denovo não resolveria?

vou ver o que consigo…

já dei uma olhada na API mas não encontrei um método “refresh” alguém tem alguma dica para o meu caso??

Obrigado pela ajuda.

amigo apos fazer a pesistencia basta fazer uma nova select na base de dados
e preencher novamente a tabela.

eu pessoalmente faço assim, no modelo de tabela eu crio um metodo setQuery que repreenche a tabela:


modelo.setQuery("SELECT * FROM tabela");

vou ver o que consigo…

já dei uma olhada na API mas não encontrei um método “refresh” alguém tem alguma dica para o meu caso??

Obrigado pela ajuda.[/quote]
O “refresh” dos dados não é responsabilidade da view e sim do model. Você deve criar um método (por exemplo, update()) na sua classe que estende AbstractTableModel. Nesse método seria feita uma nova consulta ao banco, os dados seriam atualizados e você dispararia um evento para que a view repinte a tabela.

Apesar de isso resolver, não é responsabilidade do seu TableModel fazer consultas diretamente ao banco de dados (aí é que entra uma classe DAO).

Muito obrigado pessoal…
deu tudo certo! =]

Fiz o seguinte:

  • Já tinha a classe DAO;
  • Criei um método atualiza() no meu modelo;
  • na classe de view atualizo a tabela após uma inclusão/alteração/remoção;

Notei que a tabela era atualizado somente depois de dar um “Page Up”, Page Down" ou se clicado em alguma das linhas da tabela:

  • Então fiz o seguinte: logo após chamar o método atualiza() eu chamei o método repaint() da classe JTable resolvendo meu problema.

Mais uma vez obrigado pela ajuda.
[]'s

[quote=marcosvidolin]Muito obrigado pessoal…
deu tudo certo! =]

Fiz o seguinte:

  • Já tinha a classe DAO;
  • Criei um método atualiza() no meu modelo;
  • na classe de view atualizo a tabela após uma inclusão/alteração/remoção;

Notei que a tabela era atualizado somente depois de dar um “Page Up”, Page Down" ou se clicado em alguma das linhas da tabela:

  • Então fiz o seguinte: logo após chamar o método atualiza() eu chamei o método repaint() da classe JTable resolvendo meu problema.

Mais uma vez obrigado pela ajuda.
[]'s

[/quote]
A tabela não é redesenhada até que você avise que isso deve ser feito (afinal, a view não tem como adivinhar das mudanças no model). Por isso é obrigação do model disparar eventos para a view atualizar. O jeito correto de se fazer isso é chamar o método “fireTableDataChanged()” no final do seu método “atualiza()” - e não chamar um “repaint()” diretamente na view, OK?

Perfeito marcobiscaro2112…

Já fiz as alterações no código! =]

Obrigado.