Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
KiNgPiTo

Fechar jDialog...

Recommended Posts

KiNgPiTo

Boas,

estou com uma dúvida: Tenho 3 painel numa Jdialog e um botão de fechar... O que gostava de saber era se existe alguma maneira de fechar o jdialog sem ser com o setVisible(false); pois este não fecha, apenas esconde... Após abrir novamente, tudo fica como estava antes de fechar (os textos nas textboxs, os scrollers se foram deixados em baixo continuam em baixo..)

Alguem me ajuda ?

Muito Obrigado

Share this post


Link to post
Share on other sites
Knitter

Fechar uma JDialog, ou outro contentor em Swing não faz a mesma coisa que na maioria dos toolkits gráficos, isto é, quando fechas uma JDialog, na verdade não a fechas, apesar dos recursos serem libertados. Isto pode ou não ter outras implicações no teu programa.

Para fechar uma JDialog bastará invocares o método dispose(), este método é responsável por libertar todos os recursos associados à janela. Se invocares o método na última janela existente, a aplicação termina, embora devas sempre invocar o método System.exit() para terminar aplicações.

Share this post


Link to post
Share on other sites
Knitter

Só terá implicações se estiveres a tentar optimizar a utilização de recursos e, em vez de instanciares uma nova janela cada vez que alguém carrega no botão, reutilizares uma que já tenha existido, nesse caso, mesmo depois de fazeres um dispose, se voltares a tornar a janela visível, todos os componentes voltarão a ter o mesmo estado que tinham antes do dispose.

Um exemplo simples, se tiveres um janela com as típicas informações sobre a aplicação, um "About...", o código mais tradicional é, no evento do botão/menu e esquecendo a variável "me" :) :

java.awt.EventQueue.invokeLater(new Runnable() {
    public void run() {
        new About(me, true).setVisible(true);
    }
});

Ora neste código está a ser criada uma JDialog nova cada vez que se carrega no menu, se em vez de criar uma nova, se mostrasse uma já existente, essa janela ia aparecer exactamente como estava antes do dispose. É uma optimização do Swing, para evitar gastar recursos a criar algo que já existiu, e que pode ter alguns efeitos secundários, sendo o mais tradicional teres de criar código para repor todos os seus componentes ao estado original.

Mas o dispose é o método a usar :D

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.