JFrame

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

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:

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

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?

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.

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. =)

Então o JDialog resolve seu problema :slight_smile:

  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.

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.