Problema em deixar JDialog modal [RESOLVIDO]

6 respostas
brunorota

Ola galera

Eu tenho uma classe que extende um JDialog

Mais eu nao estou conseguindo deixar ela modal

Eu chamo ela da seguinte maneira

// classe que extende JDialog

Teste t = new Teste();
t.setModal(true);

eu faço isso e a classe nao esta ficando modal

Oq estou fazendo de errado?

Atenciosamente

6 Respostas

ViniGodoy

E depois vc faz o que?

t.setVisible(true);

Pode colocar mais código?

emmanuelrock

No construtor do seu JDialog tem que invocar o construtor do pai mandando o Frame do qual seu JDialog será modal, e true para que este seja modal.

Ex:

super(framePrincipal,true);

Flow…

brunorota

bom vou passar o codigo original

O JDialog eh assim o construtor dele

public ImagemComponenteGUI(){ super(); initialize(); }

o metodo initialize do JDialog

public void initialize(){ this.setSize(800, 600); this.setContentPane(getContainer()); this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); this.setResizable(false); this.setLocationRelativeTo(null); this.setVisible(true); }

Chamada do JDialog

ImagemComponenteGUI i = new ImagemComponenteGUI(); i.setModal(true);

Eh esse o codigo de chamada

brunorota

emauel soh q agora surgiu um outro problema

Se eu jah setar no contrutor o JDialog modal nao vai resolver meu problema

Pq eu passo dados por parametro e ele vai rodar antes que tudo q eu tenho dentro do meu contrutor

Eu preciso setar o JDialog a partir do setModal mesmo

ViniGodoy

Bom, veja o que você estava fazendo no seu código.

Você dava o setVisible no método initialize, que era chamado no construtor.

E isso era executado antes de você dar o setModal(true).

Eu já te dei essa dica no outro tópico, volto a dar nesse. Não chame o setVisible no seu construtor, nem no método initialize. Faça isso externamente. Isso tem a dupla vantagem de evitar confusões como essa, e de permitir que você de new na sua classe sem necessariamente torna-la visivel.

Seu initialize ficaria assim:

public void initialize(){ this.setSize(800, 600); this.setContentPane(getContainer()); this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); this.setResizable(false); this.setLocationRelativeTo(null); this.setModal(true); }

e o código para mostrar a janela assim:

ImagemComponenteGUI i = new ImagemComponenteGUI();
i.setVisible(true);

No caso, a dica do Emmanuel funcionou pq, ao colocar o true no construtor, você novamente está dizendo que a janela é modal antes de exibi-la com o setVisible.

brunorota

Ola vini

Muito obrigado mesmo

Eu precisava do seu codigo mesmo
Nessa classe eu nao podia setar o JDialog como nu no super()
Pq eu tinha algumas operações no contrutor

Eu nao sabia q nao podia setar o modal antes do setVisible

valew pela dica e pela atenção dada ao tópico

Obrigado ^^

Criado 17 de agosto de 2009
Ultima resposta 17 de ago. de 2009
Respostas 6
Participantes 3