Tenho um JFrame que chama um JDialog modal. Até ai tudo bem. Porém depois de trocar de aplicativo (com alt+tab por exemplo), se eu voltar ao programa só aparecerá o JDialog, ficando o JFrame “escondido”. Alguém sabe alguma maneira de contornar esse problema?
Valeu pela ajuda, só acho que não dá pra eu fazer isso porque no caso eu tenho uma classe que herda a JDialog.
B
brlima
cria um construtor que recebe o frame e chama super(Frame) do JDialog que tá implementando!
M
marcio_gs
Obrigado pela ajuda, mas não deu certo. Acho que faltaram detalhes na minha explicação:
Tenho um JFrame que é a tela principal. Dentro dela tenho um JPanel. Esse JPanel chama o JDialog, que é modal. Se eu dou um alt+tab e troco de aplicação, o JFrame(junto com o JPanel e tudo mais que estiver nele) some e só volta a aparecer se eu fechar o JDialog. Eu já procurei bastante mas ainda não achei a resposta. Mas agradeço a boa vontade dos que me ajudaram até aqui.
B
brlima
Entedi mais ainda a duvida… E é isso msm que tão respondendo no topico… rs
O que falta é o teu DIalog saber que o Owner dele é o Frame que voce esta chamando ele…
Na class JDialog que vc extende, faz algo do tipo MinhaDialog extends JDialog, certo?
É so criar um construtor:
public MinhaDialog(Frame fr){
super(fr);
}
Ou então vc nao explicou e piorou a sua explicação, pq eu to entendo isso.
M
marcio_gs
brlima:
Entedi mais ainda a duvida... E é isso msm que tão respondendo no topico... rs
O que falta é o teu DIalog saber que o Owner dele é o Frame que voce esta chamando ele...
Na class JDialog que vc extende, faz algo do tipo MinhaDialog extends JDialog, certo?
É so criar um construtor:
public MinhaDialog(Frame fr){
super(fr);
}
Ou então vc nao explicou e piorou a sua explicação, pq eu to entendo isso. :D
Bom, entendi o que você disse e acho que está tudo certo, só não sei como passar para o JDialog o Frame. Abaixo o código:
Ali no Frame já tentei this e TelaPrincipal(nome da classe), mas não deu certo. Não repara muito no código que eu vou começar a ver Swing esse semestre e to fazendo isso de metido mesmo :D
M
marcio_gs
Bom pessoal, o código funcionou. Obrigado a todos que ajudaram. Só mais uma coisa. Existe um jeito de passar o JFrame para o JDialog sem ser pelo construtor?
B
brlima
jContentPane.add(new MeuJDialog(super(Frame)));
Que que é isso aqui???
Isso aí não vai mostrar nunca uma JDIalog… rsrs
O correto seria
MeuJDialog d = new MeuJDialog(this);
d.setModal(true);
d.setVisible(true);
Não precisa adicionar nada de janela no ContentPane do frame… =/
E sobre passar pelo construtor, sim, somente pelo contrutor, pois o construtor da JDIalog pede o Owner logo no inicio…
M
marcio_gs
brlima:
jContentPane.add(new MeuJDialog(super(Frame)));
Que que é isso aqui???
Isso aí não vai mostrar nunca uma JDIalog… rsrs
O correto seria
MeuJDialog d = new MeuJDialog(this);
d.setModal(true);
d.setVisible(true);
Não precisa adicionar nada de janela no ContentPane do frame… =/
E sobre passar pelo construtor, sim, somente pelo contrutor, pois o construtor da JDIalog pede o Owner logo no inicio…
O jeito é fazer no construtor então hehe. Obrigado pela ajuda. Foi realmente muito útil.