[Resolvido] Como realizar persistencia no banco e atualizar JTable?
7 respostas
marcosvidolin
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.
Limpar e chamar o metodo que preenche sua Tabela denovo não resolveria?
marcosvidolin
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.
ajinfotec
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");
M
marcobiscaro2112
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.
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).
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
M
marcobiscaro2112
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
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?