Dúvidas JInternalFrame e JTable

Olá. Sou novato em Java e estou encontrando algumas dificuldades. Estou criando uma aplicação MDI usando Netbeans. Uso o método HIDE para fechar o formulário JInternalFrame, mas gostaria de saber como usar o método DISPOSE, pois quando o utilizo e chamo novamente o JInternalFrame ele não abre.

A segunda pergunta: Dentro do JInternalFrame criei um objeto Jtable. Criei o método carregarTabela que é acionado ao clicar em um item de menu. Até aí tudo bem, mas ao abrir novamente o JInternalFrame os dados da tabela aparecem duplicados cada vez que abre o Formulário.

Estou me sentindo perdido… Não é por falta de estudar, mas Java tem sido um grande desafio para mim. Desde já agradeço qualquer ajuda. Já pesquisei no Fórum, mas não encontrei nada parecido. :cry:

Opa

o método dispose literalmente destrói o objeto. então, se vc quer usar o mesmo objeto JFame ou JInternalFrame, vc terá q dar um novo new a ele.
o que vc poderia fazer p sanar essa questão é esconder ele usando o setvisible.

  JInternalFrame j = new JInternalFrame();
  j.setVisible(true); //exibe o frame
  j.setVisible(false); //esconde o frame

agora, qto a tabela, tem como vc dar mais detalhes e postar o código p anaçisde?

abrçaos

Você está usando DefaultTableModel? Se está, o erro começou por aí… é melhor entender primeiro como o JTable funciona, senão vai ficar perdido mesmo. Esses links podem te ajudar:

Uma das melhores documentações sobre JTable:
http://www.informit.com/articles/article.aspx?p=332278
http://www.informit.com/articles/article.aspx?p=333472

Alguns exemplos funcionais:
http://www.guj.com.br/posts/list/98452.java#530523
http://www.guj.com.br/posts/list/57203.java

Uma classe de tablemodel esperta, que auxilia isso, com exemplo:
http://www.guj.com.br/posts/list/100793.java#543532

Só uma dica: Nunca use o DefaultTableModel.
Ele torna o código mais confuso, mais ineficiente, mais sujeito a erros, menos encapsulado e com redundância de informação.

Olá. Estou usando setVisible(true) e setVisible(false) para abrir/fechar o JInternalFrame. O que ocorre é que ao abrir novamente o form os dados da JTable aparecem duplicados. Aí está o código que uso para carregar os dados na JTable: (obs: funciona. o problema é o que estou relatando acima.)

public void carregarTabela() {

try {
      
rs = stmt.executeQuery("select nome_autor from autores");

String VNome_autor; // Seta as variáveis...

while(rs.next()) 
{
    VNome_autor = rs.getString("nome_autor");
    
    // a linha abaixo carrega os dados para as linhas do JTable... Incrível!!!
    ((DefaultTableModel)tblAutores.getModel()).addRow(new Object[] {VNome_autor}); 
    boolean tabelacarregada = true;
}

} catch (SQLException e) { // trata os erros de SQL
    JOptionPane.showMessageDialog(this, "Erro comando SQL " + e.getMessage());
}     

}

Oi, por favor, use a tag code para formatar o código que você posta no guj. Se ainda não conhece esse recurso, leia esse artigo aqui:
http://www.guj.com.br/posts/list/50115.java

Leia os links que eu postei para você ali em cima. É muito importante entender como funciona o TableModel para usar um JTable corretamente. E também é muito importante se livrar do DefaultTableModel.

pelo que entendi a carga da tabela está correta, não há erros, você só deve limpá-la quando for deixar de usar.

Bem observado, não há erros. Só codigo extremamente perigoso e dados redundantes, já que envolve downcasts e DefaultTableModel (sim, vou incomodar muito com isso, já que é realmente péssimo usa-lo).

Bem observado, não há erros. Só codigo extremamente perigoso e dados redundantes, já que envolve downcasts e DefaultTableModel (sim, vou incomodar muito com isso, já que é realmente péssimo usa-lo).[/quote]

Então pode ser perigoso, no entanto é de fácil utilização pra quem está começando, não devemos colocar medo nas classes e importações que eles utilizam…
assim deixaram de aprender devemos dar dicas e incentivá-los a ler as documentações de classes, a buscar uma resposta e a tentar resolver seus problemas sozinhos…

Serei mais claro. O grande problema é que todas as vezes em que abro o meu JInternalFrame a tabela abre com os dados duplicados. Deu para entender?

Se na primeira vez em que abro o form mostra 10 registros, na segunda mostra 20, e assim por diante… Entenderam? Eu estou montando a tabela durante a abertura do Form.

Não sei mais o que faço. Li a Documentação da JTable sem muito sucesso.

Voce tem que pegar o model da JTable limpar e depois colocar os dados novos.

E realmente é recomendavel voce deixar de usar o DefaultTableModel.

Simplesmente Limpe a tabela toda vez que você abrir