JFrame

8 respostas
V

desculpa as duvidas rs, mas como faço pra que a JFrame fique visivel, mas que não possa utilizar.

Ex: eu tenho uma JFrame principal, aí eu abro a outra, enquanto essa outra estiver aberta, não será possivel usar a principal.

Abraços

8 Respostas

renato.marquez

Dependendo do objetivo de se usar o outro JFrame, não é melhor usar um JDialog?

O JDialog possui uma propriedade chamada “modal”, que bloqueia o uso de outras janelas e elementos fora da área desta caixa de diálogo.

Exemplificando, você poderia fazer assim ao clicar em um botão, por exemplo:

JDialog meuDialog = new JDialog(); meuDialog.setModal(true); meuDialog.setVisible(true);

Testa aí e veja se isso resolve :wink:

V

mas no caso, eu tenho uma JFrame principal e a outra é pra cadastro de usuarios, acho que não serve :confused:

renato.marquez

E qual seria o propósito de bloquear o JFrame principal e por quanto tempo? Ou melhor, quando você diz “não possa utilizar” pode ser tanto no sentido de bloquear mesmo (ou seja, a janela permanece visível mas o usuário não interage com nada contido nela) ou no sentido de esconder; qual é no caso?

V

No sentindo de Bloqueiar mesmo, eu quero que faça isso, enquanto não fechar a outra JFrame.

ex: em um sistema de matriculas, eu tenho o JFrame Principal e quero cadastrar um aluno, enquanto eu não fechar o JFrame de cadastro, não posso usar o Principal, mas com ele visivel, apenas bloquear o JFrame, para não poder usar os outros compontentes.

renamed
public static void main(String[] args) {
	JFrame f1 = new JFrame("Frame 1");
	f1.setSize(200, 200);
	f1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		
	JDialog f2 = new JDialog(f1, true);
	f2.setSize(100, 100);
		
	f1.setLocationRelativeTo(null); //centralizando o principal na tela
	f2.setLocationRelativeTo(f1);  //colocando o secundário no centro do principal
		
	f1.setVisible(true);
	f2.setVisible(true);
}

Rode esse código e veja se não é isso que você quer. =)

renato.marquez

Então o JDialog resolve seu problema :slight_smile:

ViniGodoy
  1. Troque o JFrame que vai abrir por um JDialog;
  2. Defina esse JDialog como modal.

Pronto!

Uma dica, não deixe o comando setVisible() no construtor de suas janelas, ou você terá problemas com os JDialogs modais. Na verdade, quem deve escolher quando a janela fica visível ou não é quem dá new na janela.

R

Olha, tirei um tempo e peguei um exemplo de como estou usando,
imagino que assim como os amigos do guj já disseram, o JDialog resolve o seu problema,
de uma olhada de como usalo, tirei esse exemplo do sistema que estou fazendo,
não repare os componentes que eu uso, pois são componentes que eu fiz,
a unica coisa que fiz na verdade foi tirar as funcionalidades da tela para que vs tenha uma ideia de como fazer,
espero ter ajudado.

Criado 12 de março de 2011
Ultima resposta 13 de mar. de 2011
Respostas 8
Participantes 5