Boa tarde galera,
Mais uma vez estou com uma dúvida desta vez acredito que não seja tão complicado mas ainda não consegui obter uma resposta.
Gostaria de saber o que acontece quando eu clico em um botão de fechar “X” de um JFrame, quando o mesmo possui o as constantes como EXIT_ON_CLOSE e DISPOSE_ON_CLOSE qual a diferença entre eles o que acontece internamente?
A duvida surgiu da seguinte maneira, possuo um JFrame principal, que dentro dele possuo um retangulo e quando clico neste retangulo devo abrir uma outra JFrame com suas respctivas funções, porém, se eu clicar novamente na tela abrirá uma outra tela novamente.
MinhaJanela minhaJanela = new MinhaJanela();
minhaJanela.setVisible(true);
Para resolver este problema, verifico se minha variável minhaJanela possui uma referencia para um objeto MinhaJanela, caso não possua ai sim instancio uma nova janela.
MinhaJanela minhaJanela;
if(minhaJanela == null){
minhaJanela = new MinhaJanela();
minhaJanela.setVisible(true);
}
Só que agora vem o verdadeiro problema, este codigo funciona até eu instanciar e fechar a primeira janela, pois quando eu clico novamente na tela para exibir e instanciar a janela novamente sua referencia já não é mais null ou seja as constantes EXIT_ON_CLOSE e DISPOSE_ON_CLOSE não limpam minha referencia para eu realizar a verificação desta forma.
Como eu posso verificar se o usuário clicou no botão de fechar “X” da JFrame, ou algo do tipo:
if(usuarioClicouNoBotaoDeFechar){
minhaJanela.dispose();
minhaJanela = null;
}
Agradeço a todos
Obrigado