Como fazer um botao de um JFrame chamar um JPanel ou outro JFrame?[Não resolvido]

11 respostas
G

Pois é, no meu JFrame principal eu tenho tres botoes que devem chamar mais tres JFrames (cada botao deve chamar apenas um JFrame).

o que devo colocar no :

public void actionPerformed(ActionEvent e) { if(e.getSource() == botaoGerenciadorDeQuartos){ //implementar aqui opções do modulo de gerenciar quartos } if (e.getSource() == botaoGerenciadorDeHospedes){ //implementar aqui opções do modulo de gerenciar hospedes } if(e.getSource() == botaoGerenciadorDeHospedagens){ //implementar aqui opções do modulo de gerenciar hospedagens } if(e.getSource() == botaoSairPrograma){ //implementar aqui opções para sair do frame } }

11 Respostas

R

Brother, p vc chamar um JFrame a partir de um outro basta vc instanciar a classe do jFrame q vc deseja chamar, por exemplo:

//Evento disparado quando o usuário clicar no botão Cadastrar do Frame A
btnCadastrar.addActionListener(new java.awt.event.ActionListener()
{
  public void actionPerformed(java.awt.event.ActionEvent e) 
	{		
             Tela B = new Tela(); //Tela é um JFrame
             B.setVisible(); //Ou coloque no initialize do JFrame q será chamado
             //O mesmo vc faz p JPanel e outros JFrame                                  
         }
});

Qualquer dúvida posta aí!

G

rp.guimaraes:
Brother, p vc chamar um JFrame a partir de um outro basta vc instanciar a classe do jFrame q vc deseja chamar, por exemplo:

//Evento disparado quando o usuário clicar no botão Cadastrar do Frame A
btnCadastrar.addActionListener(new java.awt.event.ActionListener()
{
  public void actionPerformed(java.awt.event.ActionEvent e) 
	{		
             Tela B = new Tela(); //Tela é um JFrame
             B.setVisible(); //Ou coloque no initialize do JFrame q será chamado
             //O mesmo vc faz p JPanel e outros JFrame                                  
         }
});

Qualquer dúvida posta aí!

No meu código eu fiz:

if(e.getSource() == botaoGerenciadorDeQuartos){
            botaoGerenciadorDeQuartos.addActionListener(new java.awt.event.ActionListener()
            {
                public void actionPerformed(java.awt.event.ActionEvent e) 
                {
                   JPanelGerenciadorDeQuartos jpGereciadorDeQuartos = new JPanelGerenciadorDeQuartos();  
                   jpGereciadorDeQuartos.setVisible(true);
                }
                });
            //implementar aqui opções do modulo de gerenciar quartos
        }

Mas não apareceu nada na tela

V

Você deve adicionar o ActionListener logo após a criação do botão e sem esse if(e.getSource() == botaoGerenciadorDeQuartos){

Quando o botão for clicado, o actionListener será achamado automaticamente. Registre um actionListener diferente para cada botão e esse if nunca será necessário.

G

ViniGodoy:
Você deve adicionar o ActionListener logo após a criação do botão e sem esse if(e.getSource() == botaoGerenciadorDeQuartos){

Quando o botão for clicado, o actionListener será achamado automaticamente. Registre um actionListener diferente para cada botão e esse if nunca será necessário.

Segui seus conselhos, coloquei um ActionListener para todos os botoes.
Dessa vez o botao sair até funciona.

Mas o que eu devo colocar no ActionListener do botao pra que esse crie um novo JPanel ?

Segue anexo meu código do frame principal:

V

E o botão do gerenciador de quartos não abriu?

Só um detalhe:
JPanelGerenciadorDeQuartos deveria ser um JFrame e não um JPanel…

Mude para um JFrame (ou JDialog) que já deve funcionar.

G

já tentou o método show()?

eu sempre fiz assim …

Tela B = new Tela(); //Tela é um JFrame
          B.show();

ou

Tela B = new Tela(); //Tela é um JFrame
          B.show(true);

ou se preferir garantir que a tela vai aparecer …

Tela B = new Tela(); //Tela é um JFrame
          B.show();
          B.setVisible(true);

abraço

V

O método show() está deprecated.

J

abrir eu conseguiu resolver,
uma tela JFramePrincipal chamando 1 JFrameCadastro ou consulta, mas quando fecho essa segunda, fecha o programa todo fecha.

estou começando a mexer com java agora e gostaria de uma ajuda com isso

K

é só você chamar isso.
nomeDaSuaTela.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

isso tem que estar no construtor da segunda tela. Ai é garantido que ao fechar não fecha a primeira.

R

king_of_gods:
é só você chamar isso.
nomeDaSuaTela.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

Eu usaria nomeDaSuaTela.setDefaultCloseOperation(JFrame.HIDE);

abraço

R

joemoabe:
abrir eu conseguiu resolver,
uma tela JFramePrincipal chamando 1 JFrameCadastro ou consulta, mas quando fecho essa segunda, fecha o programa todo fecha.

estou começando a mexer com java agora e gostaria de uma ajuda com isso


amigo, no setDefaultCloseOperation use o JFrame.HIDE)

e caso tenha algum botao pra fechar, ao associar o evento nao use o System.exit(0); use dispose(); no lugar

Criado 12 de junho de 2007
Ultima resposta 16 de jul. de 2007
Respostas 11
Participantes 8