Como fazer um botao de um JFrame chamar um JPanel ou outro JFrame?[Não resolvido]
11 respostas
G
gp7junior
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
}
}
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 AbtnCadastrar.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEvente){TelaB=newTela();//Tela é um JFrameB.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
gp7junior
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 AbtnCadastrar.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEvente){TelaB=newTela();//Tela é um JFrameB.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(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEvente){JPanelGerenciadorDeQuartosjpGereciadorDeQuartos=newJPanelGerenciadorDeQuartos();jpGereciadorDeQuartos.setVisible(true);}});//implementar aqui opções do modulo de gerenciar quartos}
Mas não apareceu nada na tela
V
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.
G
gp7junior
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
ViniGodoy
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
Gustavo.foa
já tentou o método show()?
eu sempre fiz assim …
TelaB=newTela(); //Tela é um JFrameB.show();
ou
TelaB=newTela(); //Tela é um JFrameB.show(true);
ou se preferir garantir que a tela vai aparecer …
TelaB=newTela(); //Tela é um JFrameB.show();B.setVisible(true);
abraço
V
ViniGodoy
O método show() está deprecated.
J
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
K
king_of_gods
é 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
rafael.pierre
king_of_gods:
é só você chamar isso. nomeDaSuaTela.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
Eu usaria nomeDaSuaTela.setDefaultCloseOperation(JFrame.HIDE);
abraço
R
RaphaelSantos
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