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.
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?
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:
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.
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.