Aplicação ficando presa com System.exit()

Olá a todos,

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.

tenta usar o dispose

Era mais ou menos isso:

this.addWindowListener(new WindowAdapter() { private void windowClosed() { dispose(); System.exit(0); } });

Se era, não resolveu. :frowning:

Era mais ou menos isso:

this.addWindowListener(new WindowAdapter() { private void windowClosed() { dispose(); System.exit(0); } });

Se era, não resolveu. :frowning: [/quote]

rapaz retire o System.exit(0); ficando assim:

[code]this.addWindowListener(new WindowAdapter() {
private void windowClosed() {
dispose();

}
});[/code]

Basta chamar o método (no construtor mesmo):

setDefaultCloseOperation(DISPOSE_ON_CLOSE);

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).

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=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.

Sobre qual VM, não entendi a pergunta… :?:

Pode zipar o seu código e anexa-lo?