[RESOLVIDO] - Impedir abertura de um nova tela

10 respostas
J

Bom pessoal, sou iniciante em Interfaces Gráficas e gostaria da ajudar de vocês.

Vamos lá, eu criei um tela com um botão onde ao clicá-lo irei chamar outra tela para cadastrar pessoas, sendo que mesmo com esta janela aberta, se clicarmos novamente no botão irá abrir outra tela, então gostaria saber o que posso fazer para que isso não aconteça?

Sds.

Júnior Marques

10 Respostas

R

usa um nomedasuaprimeiratela.setVisible(false);

I

Olá ryouta, eu também tenho está dúvida do JMARQ. Beleza eu entendir que se deve settar para false o método, porém, não sei como fazer, para caso o usuário clique, no botão fechar na barra de título. Como fazer a tela anterior (que está invisível) voltar com sua visibilidade?

Aguardo uma resposta e desde já agradeço.

J

ryouta, valeu pela força, mas já fiz isso e simplesmente não ocorre o efeito desejado. O que pretendo é?

Ao clicar no botão a primeira vez, a tela abre e permanece aberta, ok!;

Caso o usuário tenha a curiosidade de clicar novamnete no botão, o mesmo não deverá acionar a tela novamente, devido a mesma está aberta;

Então, como podemos fazer isso?
I

JMARQ, está também é exatamenre minha dúvida :frowning:

R

facin

vc poem um contador no evento do botão

int cont = 0;
temos o evento do botão;
cont++;
if (cont > 1){
JOptionPane.showMessageDialog( null,"A janela Já está aberta" );

}else {

Ajanela se abre

}
I

:?: :?: :?: :?: :?: Desculpe :?: :?: :?: :?: :?:

R

fiz um ex pra vcs

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;


public class frame extends JFrame implements ActionListener {


	 public frame (){
		
		 super("Janela aberta");
	     this.setBounds(200,200,400,400);
	     this.setLayout(null);
	     
	     JButton b1 = new JButton("clika aqui");
	     b1.setBounds(100,150,150,40);
	     b1.addActionListener(this);
	     this.add(b1);
	     
	     this.setVisible(true);
	 
	 }
	
	public static void main(String[]a){
		new frame();
	}
	
	
	
	
	int cont = 0;
	public void actionPerformed(ActionEvent e) {
		 JButton botao = (JButton)e.getSource();
		    
		 if(botao.getText().equals("clika aqui")){
		    	if (cont == 1){
		    		JOptionPane.showMessageDialog(null,"Janela Ja aberta");
		    		
		    	}else{
		    		JFrame frame2 = new JFrame("Janela 2");
		    		frame2.setBounds(200,200,400,400);
		    		frame2.setVisible(true);
                                frame2.setDefaultCloseOperation(EXIT_ON_CLOSE);
		    		cont++;
		    		
		    	}
		    }
		
	}

}
M

Uma dica é utilizar JDialog e definilo como Modal. assim o usuário só poderá acessar os botoes da Janela Principal quando a segunda janela for fechada.

ex:

public class JanelaSecundaria extends JDialog
{
       public JanelaSecundaria()
       { 
              this.setModal(true);
       }
}

ou utilize uma validação no action do JButton como o ryouta mostrou:

JanelaSecundaria janela = null;

public void actionPerformed(ActionEvent e)
{
       if(janela == null)
       {
              janela = new JanelaSecundaria();
       }

       janela.setVisible(true)
}
J

Pessoal, valeu mesmo, tudo resolvido, testei os exemplos citados e todos funcionaram exatamente como desejava.

Forte abraço.

R

pode usar ( dispose() ) na janela, toda hora que abrir outra, fecha tudo que ta aberto…

Criado 10 de abril de 2011
Ultima resposta 23 de abr. de 2011
Respostas 10
Participantes 5