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

KiNgPiTo

Fechar jDialog...

4 mensagens neste tópico

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o dispose() resultou exactamente para o que queria...

Muito Obrigado :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora