Duvidas em uma linha de comando do Jframe...alguém pode me ajudar???  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
gabriel.coelho
JavaBaby
[Avatar]

Membro desde: 17/10/2006 12:11:33
Mensagens: 81
Localização: São Bernardo do Campo
Offline

Por favor, estou com duvida nesta linha de comando, queria saber qual a utilidade dessa linha!!!

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

aqui segue o bloco completa em que essa linha pertence:

JFrame frame = new ImageViewerFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);


Valeu....

E DEUS DISSE A NOÉ:
FAÇA O BACKUP QUE EU VOU FORMATAR!!!!!


Gabriel Coelho
E-mail: gabrielcpcoelho@gmail.com
Msn: gringo.roots@hotmail.com / g.coelho@merodata.com.br
São Bernardo do Campo - SP
[Email] [MSN]
Sombriks
Java Ninja
[Avatar]

Membro desde: 14/04/2005 16:36:03
Mensagens: 250
Localização: Fortaleza, CE
Offline

vc está informando a operação padrão de "fechamento".
é o que deve ser feito quando o usuário apertar o "X" da janela.

sem essa linha a janela fecha mas o programa não termina.

Linux user #391803.
http://counter.li.org/
brothermclaud
JavaBaby
[Avatar]

Membro desde: 13/08/2005 00:43:14
Mensagens: 86
Offline

Só para complementar o que o Sombriks disse, essa opção do JFrame instrui o Garbage Colector do JDK para apagar da memória as variáveis criadas durante o runtime. Se isso não for feito, cada vez que você roda o programa, como bem disse o Sombriks, será ocupado mais e mais espaço da memória.

"Quem, de três milênios, não é capaz de se dar conta, vive na ignorância, na sombra, a mercê dos dias, do tempo". Johann Wolfgang von Goethe
[MSN]
davidbuzatto
Moderador
[Avatar]

Membro desde: 07/08/2004 23:47:57
Mensagens: 4013
Localização: Vargem Grande do Sul - SP
Offline

brothermclaud wrote:Só para complementar o que o Sombriks disse, essa opção do JFrame instrui o Garbage Colector do JDK para apagar da memória as variáveis criadas durante o runtime. Se isso não for feito, cada vez que você roda o programa, como bem disse o Sombriks, será ocupado mais e mais espaço da memória.


brother, usar o método setDefultCloseOperation(JFrame.EXIT_ON_CLOSE); não tem nada haver com o coletor de lixo. Esse método como o sobrinks disse é um método de conveniência para que não seja necessário registrar um listener para ouvir o evento de fechamento da janela em questão e ao ser ouvido chamar um System.exit(0).

Não tem como vc invocar a execução do coletor de lixo diretamente e ter certeza que este será executado.

Para "sugerir" à máquina virtual que ela execute o coletor de lixo pode-se usar System.gc(), mas como falei não há nenhuma garantia que ele seja executado.

O coletor de lixo é automático, a jvm o executa quando necessário. É claro que quando o usuário fechar a janela e finalizar o programa todo o processo será discartado, levando consigo todos os objetos criados. O coletor de lixo é executado quando finaliza-se algum método, etc, não tem como ter um controle preciso sobre o mesmo. Só é possível sugerir sua execuçã, nada mais.

Se não for usado o setDefultCloseOperation(JFrame.EXIT_ON_CLOSE) o frame ficará invisível, mas o processo como um todo aind estará ativo, e o coletor de lixo não será executado a não ser que haja necessidade, creio que nem mesmo o JFrame será discartado, pois sua execução ainda não foi terminada.

Falow!

Seja educado. Agradeça quem te ajudou. Não custa nada.
Dúvidas de Java? Utilize o fórum! Não respondo via MP.

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Fowler)
"A vida é um escândalo, e no final dá sempre errado. O que humaniza o homem é o fracasso."

http://davidbuzatto.com.br | GitHub | uHunt | CV Lattes | Last.fm
[WWW]
thokk
Virtual Machine Man
[Avatar]

Membro desde: 18/10/2006 17:04:08
Mensagens: 521
Offline


vc está informando a operação padrão de "fechamento".
é o que deve ser feito quando o usuário apertar o "X" da janela.

sem essa linha a janela fecha mas o programa não termina.


Ele esta certo vc esta fazendo a operação X para fechar, ou melhor quando vc abre um aplicativo e contem aquele X, é ele que vc esta gerando.

Falow Paulo

Na vida temos um dia único e feliz. Este dia foi quando conheci minha esposa!!!!
[Email] [MSN]
rissato
JavaEvangelist
[Avatar]

Membro desde: 16/05/2006 22:07:12
Mensagens: 446
Localização: Uberlândia
Offline

se vc nao colocar essa linha, a JVM não termina. Faz um teste pra vc entender: Abra e feche seu programa 3 vezes sem essa linha. Aí depois da uma olhada (no Gerenciador de tarefas) nos processos abertos. Vc vai ver 3 instancias do java rodando.

Quer vc pense que é capaz ou não, vc está certo!

Sun Certified Java Programmer 6.0
[MSN] [ICQ]
thokk
Virtual Machine Man
[Avatar]

Membro desde: 18/10/2006 17:04:08
Mensagens: 521
Offline

Botão fechar que vc esta gerando.

Na vida temos um dia único e feliz. Este dia foi quando conheci minha esposa!!!!
[Email] [MSN]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team