estou implementando um programinha simples com Swing, e para que ele fechasse a janela ao clicar no botão “X” adicionei um WindowAdapter e implementei dentro dele a função windowClosing(), como demonstrado abaixo:
this.addWindowListener(new WindowAdapter() {
private void windowClosing() {
System.exit(0);
}
});
A questão é que o processo javaw.exe fica preso mesmo usando System.exit(0).
Alguma idéia para solucionar a questão?
Obs.: rodando pelo NetBeans, quando fecho no X o run do ant não termina.
Com isso, quando você pressionar o [X] da janela o método dispose() será automaticamente chamado, fechando a janela e (se não houver mais janelas abertas) encerrando o programa (logo, não é preciso adicionar WindowListener).
[quote=ViniGodoy]Nenhuma dessas dicas tem nada a ver. O System.exit(0) comanda o fechamento da VM, e não deveria deixar o Java preso, sob hipótese nenhuma.
Seu sistema dispara alguma outra thread? Ela está ficando presa?
Você definiu a thread como setDaemon(true)?
Ainda assim, isso não deveria ocorrer. Você tem certeza que o javaw.exe que está ficando é o mesmo da aplicação?
Que VM você está usando?[/quote]
Oi Vini,
não tem nenhuma outra thread sendo disparada pelo meu sistema. Na verdade, o que eu fiz é algo muito simples, só uma janela em Swing com 3 componentes (2 JTextArea e 1 JButton).
E sim, o javaw.exe que está ficando preso é o mesmo da aplicação. Ele só termina a execução quando eu clico no “stop” do run do NetBeans. Quando eu fecho no X deveria interromper a execução lá também, não?
Testei rodar e fechar várias vezes e não termina o processo.