Travar JFrame do fundo

10 respostas
java
R

Tenho um JFrame, neste JFrame, chamo um outro JFrame assim:

Tela2 t = new Tela2();
t.setVisible(true);

Como posso travar o JFrame que fica ao fundo, ou seja, fazer com que a Tela2 sempre fica sobreposta ao JFrame de fundo e que este fica travado.

Vi que pode usar JDialog no lugar de JFrame, vocês recomendam?

10 Respostas

S

Um jFrame nem um jInternalFrame não tem este comportamento que deseja.

nesse caso seria um jDialog. aplicando nele o setModal(true);

R

Mas tudo que posso fazer em um JFrame eu consigo fazer em um JDialog?

S

basicamente sim, mas não é aconselhável usar jDialog para tudo, somente quando se necessita
desse bloqueio de tela.

R

Mas usar JFrame é muito ruim, pois cada janela que abrir, irá criar na barra de ferramentas um ícone para a tela, Se abrir 5 JFrame encadeado, vai ter 5 ícones na barra de ferramentas do windows.

S

nesse caso usa-se um jInternalFrame.

R

Em muitos lugares não recomendam usar jInternalFrame. Não tem como usar sempre JFrame e travar o JFrame de baixo?

S

se tem desconheço, você pode setar a visibilidade do frame debaixo até que conclua o frame de cima.

V

Use o JDialog mesmo. Geralmente o JFrame é só a janela principal, ou janelas que precisem estar na barra de menus ou no alt+tab. Os demais são JDialogs.

R

Então, o problema do JDialog é que não tem botões de minimizar e maximizar…

V

Bom, agora você sabe porque falamos mal do Swing para desenvolvimento desktop. :slightly_smiling:

Agora, a maioria dos programas não tem janelas modais maximizáveis e minimizáveis. Só o fato de você querer isso já está cheirando muito mal.

Você pode xunxar isso colocando isso aqui no construtor do seu JDialog:

setUndecorated(true);
getRootPane().setWindowDecorationStyle(JRootPane.FRAME);

Mas o comportamento pode não ser 100% garantido.

Criado 26 de fevereiro de 2016
Ultima resposta 26 de fev. de 2016
Respostas 10
Participantes 3