Como fechr apenas uma tela?

11 respostas
cleyvison

tenho um código que abre uma tela qdo clico em determinado elemento mais ou menos isso

if ( acaoBotao == abrir)
{
        Teste teste = new Teste();
}

abre normal o problema é que to usando

System.exit(0);

na classe Teste e ta fechando too o prorama mas, na realidade queo fechar so a janela da Classe teste… alguem pode me ajudar?

Abraços…

11 Respostas

Marlon_Meneses

teste.dispose();

gilberto_oliveira

a classe Teste extende de quem JFrame? JDialog? se for um desses dois você pode usar

//fecha a "tela"
this.dispose(); //this é a ref. para seu objeto teste.

ah vc pode ainda usar:

//no construtor coloque para quando o usuário clicar no "x" do canto superior direito
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
//EXIT_ON_CLOSE -> fecha o programa todo
//HIDE_ON_CLOSE -> apenas esconde a janela
//DISPOSE_ON_CLOSE -> esconde a janela  e libera os recursos dela

Será que eu entendi bem a pergunta? Qualquer tutorial básico de swing fala dessas coisas.

cleyvison

Obrigado…

dyorgio

O correto para as janelas swing (JDialog e Jframe) eh
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE)

e utilizar setVisible(false);

o metodo dispose() não deveria ser usado por um
programador, se o objetivo eh apenas fechar a janela.

M

dyorgio:

o metodo dispose() não deveria ser usado por um
programador, se o objetivo eh apenas fechar a janela.

Poderia falar mais a respeito?
Antes eu usava setVisible(false); na hora de fechar uma janela… Mas ai eu pensei… Isso não ocupa memoria demais? Deixar uma coisa aberta, aparentemente fechada pro usuario, ao invés de dar uma dispose() não pode liberar memoria?

É realmente uma dúvida, sou novo no desenvolvimento de aplicações e gostaria de saber mais a respeito.

dyorgio

se o seu objetivo é liberar memoria
basta setar o setDefaultCloseOperation() com DISPOSE_ON_CLOSE,
o Swing fara o dispose para vc apos vc dar o setVisible(false)

Alem disso, o setVisible(false) garante a chamada dos windowListeners corretamente.

Quem diz isso é o javadoc, eu só estou repassando :wink:

cleyvison

seria algo assim?

//setDefaultCloseOperation() com DISPOSE_ON_CLOSE, 

.

.

.

if (objeto == click)
{
       setVisible(true);
}

e feito isso a janela se fecha?não deixa apenas de ser apresentada?

dyorgio

não entendi seu codigo…estava comentado…

bem, com o setDefaultCloseOperation(DISPOSE_ON_CLOSE)
o Swing da o dispose internamente quando vc chama setVisible(false)…
acho que era isso que vc queria saber

Matheus_Leandro_Ferr

dyorgio:
O correto para as janelas swing (JDialog e Jframe) eh
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE)

e utilizar setVisible(false);

o metodo dispose() não deveria ser usado por um
programador, se o objetivo eh apenas fechar a janela.

Apenas uma dúvida.: Se o método dispose() não deve ser usado (por um programador) para fechar uma janela, para que usa-lo ? Ou melhor, pra q ele foi criado?

dyorgio

para o caso de vc usar setDefautOperation(DO_NOTHING_ON_CLOSE);

ai o programador é obrigado a usa dispose() para
fechar a janela e liberar seus recursos.

Bah cara, eu ia fazer um site que ia usar o VeSPague…
mais não rolou :frowning:

Matheus_Leandro_Ferr

Sim, nesse caso o uso do dispose() é obrigatório mesmo…

É meio arriscado a combinação desses 2 métodos! Mesmo o javadoc garantindo uma chamada dos WindowListeners quando usar o setVisible(false),

O Javadoc especifica que o melhor uso do setVisible() é para efeitos de exibição.

Pq não rolou usar o VeSPague ? :frowning:

Criado 24 de junho de 2009
Ultima resposta 25 de jun. de 2009
Respostas 11
Participantes 6