Qual melhor maneira de fechar essas telas com um botão Fechar? Atualmente uso dispose() mas algumas vezes tenho a impressão de que ela não está fechada, apenas não está vizivel.
Fechar JFrame, JInternalFrame, JDialog
5 Respostas
Olá,
O dispose() tem a funcionalidade parecida com o setVisible().
Pra fechar mesmo voce usa o close().
Voce pode também implementar o WindowClosing no seu objeto para realizar alguma coisa antes de fechar
Abraços
Emerson
De onde surgiu essa impressão? A melhor maneira é usar o dispose() mesmo.
O comando close() não existe.
Complementando. O método dispose vem da classe java.awt.Window e tem a seguinte descrição.
public void dispose()Releases all of the native screen resources used by this Window, its subcomponents, and all of its owned children. That is, the resources for these Components will be destroyed, any memory they consume will be returned to the OS, and they will be marked as undisplayable.…
[]´s
A dúvida surgiu daqui:
Chamada da tela:
private void cadastroBanco() {
if (consultaBanco == null ) {
consultaBanco = new FrameConsultaBanco(desktop);
}
consultaBanco.mostraTela();
}
Método mostraTela():
public final void mostraTela() {
initComponents();
pack();
setVisible(true);
}
O dispose() libera os recursos de tela associados ao SO.
Sua tela, e todos os componentes que ela possui, são criados no new e só vão ser efetivamente destruídos quando o garbage collector rodar, isso se sua aplicação liberar toda as referências à sua tela. Ou seja, as informações dos componentes Java permanecem vivas.
Nesse seu caso, só quando a variável consultaBanco deixar de existir ou valer null.