main que chama um frame; e depois esse frame é fechado e aberto outro.
No ultimo Jframe existe o comando para finalizar a aplicação.
System.exit(0);
O Jframe finaliza mas a aplicação não.
Esse comportamento ocorre mesmo quando Tesystem.exit(0) é executado em qq parte da aplicaçào o processo dela não é fechado.
Quando ocorre um bug tenho que matar o processo do windows.
ao abrir frames são criados threads para ele, e essas ficam individualizadas.
No seu caso, seria melhor trabalhar com aplicação tipo MDI, assim ao finaliza-la ele mataria todas “filhas”
sergiotaborda
gustavo.moda:
Amigos,
To ficando doido!
Olha so.
main que chama um frame; e depois esse frame é fechado e aberto outro.
No ultimo Jframe existe o comando para finalizar a aplicação.
System.exit(0);
O Jframe finaliza mas a aplicação não.
Esse comportamento ocorre mesmo quando Tesystem.exit(0) é executado em qq parte da aplicaçào o processo dela não é fechado.
Quando ocorre um bug tenho que matar o processo do windows.
O processo so termina quando a JVM termina. A JVM só termina quando todas as Threads não-deamon terminam.
Vc tem alguma thread não-deamon na sua aplicação ? (pergunta capciosa)
Um faz o splah de inicializacao e o principal.
Porem, no principal, todos os comandos faco com Runnable (thread). Mas no final da thread igualo a null, ou seja, mato ela.
gustavo.moda
eduardocsanto:
Mas usa aplicação tem vários frames?
Já tentou usar JInternalFrame? Com ele vc desenvolve em de um cima de um frame apenas.
Um faz o splah de inicializacao e o principal.
Porem, no principal, todos os comandos faco com Runnable (thread). Mas no final da thread igualo a null, ou seja, mato ela.
Não. Igualar a variável que referencia um objeto thread NÂO mata a thread.
O Swing têm a sua própria thread. Para terminar a thread do swing vc precisa esconder todos os objetos swing existentes.
Vc pode dar um dispose neles, mas se não der um setVisible(false) antes, o dispose não funciona.
Moral da historia: antes de fazer System.exist() certifique-se que todos os frames estão fechados. Fechados significa setVisible(false)
E
eduardocsanto
Nessas threads que tu dispara não tem nenhuma que fica esperando resposta de algum lugar … ?
Por isso ela fica em memória, ou melhor, uma thread troca mensagens com a outra? Uma não pode estar esperando a outra, por isso o processo fica preso?
gustavo.moda
eduardocsanto:
Nessas threads que tu dispara não tem nenhuma que fica esperando resposta de algum lugar … ?
Por isso ela fica em memória, ou melhor, uma thread troca mensagens com a outra? Uma não pode estar esperando a outra, por isso o processo fica preso?
Não tem. Todas encerra o processo.
Ja fiz teste de somente abrir o JFRAME e sair, tem processo rodando.