Chamando um JDialog através de um JInternalFrame

7 respostas
L

Pessoal,

Estopu trabalhando com JFrame e JInternalFrames mas infelizmente não consigo fazer o JInternalFrame ser modal. Tentei então utilizar o JDialog, mas não consigo adiciona-lo ao JDesktopPane… alguém possui algum exemplo de como chamar um JDialog e coloca-lo dentro do JDesktopPane?

[[]]'s

7 Respostas

davidbuzatto

Modal só JDialog.

L

Você saberia como faço pra chamar o JDialog dentro do JDesktopPane? Estou apanhando e até agora não consegui

Eu tenho um JFrame como MDI e através dele chamo vários JInternalFrames e nesses JInternalFrames quero chamar JDialogs, mas quero que sejam “modal” e que fiquem dentro da área do JDesktopPane (que está no JFrame).

apolo_kk

Putz cara, minha dúvida é a mesma da tua. Eu quero saber como adiciona um Jdialog no desktop, porque ja tentei passar por parâmetro o desktop mas não dá.

Ajuda a gente ae quem puder. Obrigado

ViniGodoy

Bem-vindos ao mundo das deficiências do Swing.

Não dá para fazer uma JInternalFrame modal, ponto. Existem alguns xunxos para emular esse comportamento, mas nenhum é perfeito. O primeiro é construir um GlassPane atrás de sua janela. A segunda é mexendo nos listeners. Dêem uma olhada no artigo:
Creating Modal Internal Frames.

Particularmente, não recomendo nenhuma das duas abordagens.
O que tenho feito em meu sistema é o seguinte. Eu uso a JDialog e associo ela a janela que tem o DesktopPane. Ela não ficará dentro do DesktopPane (nem tudo é perfeito), mas a dor de cabeça é infinitamente menor do que o comportamento estranho gerado pelas alternativas acima (fora que manter um código daquela também é uma grande dor de cabeça). Além disso, eu altero a decoração do JDialog para ela parecer uma internal frame.

Para mudar a decoração (faço isso apenas no “Metal Look and Feel”), uso o seguinte código:

Class metal = javax.swing.plaf.metal.MetalLookAndFeel.class; if ( UIManager.getLookAndFeel().getClass().equals(metal) ) { setUndecorated(true); getRootPane().setWindowDecorationStyle(JRootPane.PLAIN_DIALOG); }

T

É por isso que patrocino a campanha “JDesktopPane e JInternalFrame fazem mal à saúde”.

G

Qual seria o problema em usar um JDialog associando ele à tela que tem o JDesktopPane?

V

Boa noite,

Você conseguiu chegar a algum resultado com a sua aplicação? Pergunto pois estou no mesmo impasse ( inclusive postei um texto bem detalhado de um problema que estou tendo idêntico ao seu )…

Afinal, tem ou não tem como adicionar o JDialog dentro do JDesktopPane?

Criado 15 de agosto de 2006
Ultima resposta 3 de dez. de 2008
Respostas 7
Participantes 7