Array
(
)

Fechar um JFrame filho sem que o comando feche o JFrame Mãe.

Elton Fonseca
   - 09 abr 2009

Boa tarde galera! Andei pesquisando na internet e aqui mesmo no fórum, mas não consegui achar a resposta para meu problema. (acho que procurei mal) Vamos lá: Tenho um JFrame mãe. Dentro deste JFrame tenho um menu que chama a operação de uma classe Cadastro(JFrame filho (até aí beleza)). Mas, quando eu fecho o JFrame filho ele fecha também o JFrame mãe. Agora a pergunta: Qual método devo usar para que ao fechar o JFrame filho não feche o JFrame mãe? * Desculpe pelos mãe e filho, mas achei legal usar esse linguajar por uma questão didática. :mrgreen:

Vagner
   - 09 abr 2009

tenta por #Código JFrame filho.setVisible(false);

0
|
0

Mauricio Bento
   - 09 abr 2009

Acho q vc n deveria usar dois jFrame, use o Jdialog no lugar do seu JframeFilho. Vai ficar mais fácil. No Jdialog vc passa pelo constutor dele o jFrame Flw

0
|
0

Guilherme
   - 09 abr 2009

calma^^ bem mais fácil no teu JFrame filho tem uma opção "setDefaultCloseOperation()" com vários parâmetros o último provavelmente é "exit_on_close" (se tu criou no netbeans, claro) troca esse parametro para "hide_on_close" =)

0
|
0

Everton Barros
   - 09 abr 2009

Acho q vc não pesquisou direito. http://www.javafree.org/javabb/viewtopic.jbb?t=867369

0
|
0

Elton Fonseca
   - 09 abr 2009

Vamos lá pessoal! É o seguinte: Tenho uma classe chamada ExpertSolution (que de esperto ainda não tem nada :hauhau: ) O projeto é o seguinte: Vou ter um JFrame chamado ExpertSolution (JFrame mãe) que irá chamar muitas outras classes. Um exemplo é uma classe que chamo de CadastroClientes. Essa é tal JFrame mãe. #Códigopackage System; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class ExpertSolution extends JFrame { JMenuBar barra; JMenu opcoes; JMenuItem cadastroClientes, cadastroFuncionarios, sair; public ExpertSolution(){ super("Expert Solution"); Container tela = getContentPane(); tela.setLayout(null); barra = new JMenuBar(); setJMenuBar(barra); opcoes = new JMenu("Cadastros"); barra.add(opcoes); cadastroClientes = new JMenuItem("Cadastro de clientes"); cadastroClientes.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){ CadastroClientes cadastroClientes = new CadastroClientes(); } } ); cadastroFuncionarios = new JMenuItem("Cadastro de Funcionários"); sair = new JMenuItem("Sair"); sair.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){ int opcao; Object[] BtSair={"Sim","Não"}; opcao = JOptionPane.showOptionDialog(null,"Deseja sair desta operação?","Fechar", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, BtSair, BtSair[0]); if(opcao == JOptionPane.YES_OPTION) System.exit(0); } }); //cria tecla de atalho para os menus ítens cadastroClientes.setMnemonic(KeyEvent.VK_L); cadastroFuncionarios.setMnemonic(KeyEvent.VK_F); sair.setMnemonic(KeyEvent.VK_S); opcoes.add(cadastroClientes); opcoes.add(cadastroFuncionarios); opcoes.add(sair); this.setExtendedState(MAXIMIZED_BOTH); setVisible(true); setLocationRelativeTo(null); } public static void main(String[] args) { ExpertSolution app = new ExpertSolution(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } A classe ExpertSolution chama a ação da classe CadastroClientes (JFrame filho) #Códigopackage System; import javax.swing.*; import javax.swing.text.*; import java.awt.*; import java.text.*; import java.awt.event.*; public class CadastroClientes extends JFrame { JLabel RazaoSocial, Cnpj, IscricaoEstadual, Endereco, Bairro, Cidade, Cep, Estado, Telefone; JTextField TRazaoSocial, TCnpj, TIscricaoEstadual, TEndereco, TBairro, TCidade, TCep, TEstado, Ttelefone; JFormattedTextField JfRazaoSocial, JfCnpj, JfCep; JButton BtSalvar, BtSair; MaskFormatter mascaraCnpj, mascaraInscricaoEstadual, mascaraCep, mascaraTelefone; public CadastroClientes(){ super("Cadastro de Clientes"); Container tela = getContentPane(); setLayout(null); //atribuição de valores para os JLabels RazaoSocial = new JLabel("RazaoSocial"); Cnpj = new JLabel("Cnpj"); IscricaoEstadual = new JLabel("Iscricao Estadual"); Endereco = new JLabel("Endereco"); Bairro = new JLabel("Bairro"); Cidade = new JLabel("Cidade"); Cep = new JLabel("Cep"); Estado = new JLabel("Estado"); Telefone = new JLabel("Telefone"); try{ mascaraCnpj = new MaskFormatter("##-###-###/####-##"); mascaraInscricaoEstadual = new MaskFormatter("###.###.###"); mascaraCep = new MaskFormatter("#####-###"); mascaraTelefone = new MaskFormatter("(##)-####-####"); mascaraCnpj.setPlaceholderCharacter('_'); mascaraInscricaoEstadual.setPlaceholderCharacter('_'); mascaraCep.setPlaceholderCharacter('_'); mascaraTelefone.setPlaceholderCharacter('_'); }catch(ParseException excp){} //atribuição dos valores para os JTextsFilds TRazaoSocial = new JTextField(50); TCnpj = new JFormattedTextField(mascaraCnpj); TIscricaoEstadual = new JFormattedTextField(mascaraInscricaoEstadual); TEndereco = new JTextField(50); TBairro = new JTextField(20); TCidade = new JTextField(20); TCep = new JFormattedTextField(mascaraCep); TEstado = new JTextField(20); Ttelefone = new JFormattedTextField(mascaraTelefone); //atribui um botão ao JFrame BtSalvar = new JButton("Salvar"); BtSair = new JButton("Sair"); //define os posicionamentos e as larguras de cada JLabel RazaoSocial.setBounds(50,20,80,20); Cnpj.setBounds(50,60,80,20); IscricaoEstadual.setBounds(50,100, 100,20); Endereco.setBounds(50,140,80,20); Bairro.setBounds(50,180,80,20); Cidade.setBounds(50,220,80,20); Cep.setBounds(50,260,80,20); Estado.setBounds(50,300,80,20); Telefone.setBounds(50,340,80,20); //define posicionamento dos JTextsFields TRazaoSocial.setBounds(125,20,200,20); TCnpj.setBounds(110,60,130,20); TIscricaoEstadual.setBounds(170,100,80,20); TEndereco.setBounds(110,140,200,20); TBairro.setBounds(110,180,100,20); TCidade.setBounds(110,220,150,20); TCep.setBounds(110,260,70,20); TEstado.setBounds(110,300,20,20); Ttelefone.setBounds(110,340,100,20); // define o posicinamento do botão salvar BtSalvar.setBounds(150,420,100,20); BtSalvar.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){ JOptionPane.showMessageDialog(null, "O usuário foi cadastrado com sucesso!"); } }); BtSair.setBounds(280,420,100,20); BtSair.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){ int opcao; Object[] BtSair={"Sim","Não"}; opcao = JOptionPane.showOptionDialog(null,"Deseja sair desta operação?", "Fechar", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, BtSair, BtSair[0]); if(opcao == JOptionPane.YES_OPTION) System.exit(0); } }); //define techa de atalho BtSair.setMnemonic(KeyEvent.VK_S); //determina o botão Salvar como foco após precionar o enter getRootPane().setDefaultButton(BtSalvar); //adiciona os JLabels acima na janela tela.add(RazaoSocial); tela.add(Cnpj); tela.add(IscricaoEstadual); tela.add(Endereco); tela.add(Bairro); tela.add(Cidade); tela.add(Cep); tela.add(Estado); tela.add(Telefone); //adiciona os TextsFields acima na janela tela.add(TRazaoSocial); tela.add(TCnpj); tela.add(TIscricaoEstadual); tela.add(TEndereco); tela.add(TBairro); tela.add(TCidade); tela.add(TCep); tela.add(TEstado); tela.add(Ttelefone);; //adiciona o botão salvar na tela tela.add(BtSalvar); tela.add(BtSair); //define que o usuário não pode redimensionar a janela setResizable(false); //define tamanho da janela setSize(500,500); //define janela como visivel setVisible(true); //abre janela no centro setLocationRelativeTo(null); } public static void main(String[] args) { CadastroClientes app = new CadastroClientes(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } Sei que vocês devem estar com medo dos monstros acima, mas estou aprendendo. (Sugestões são bem vindas!)

0
|
0

Carlos Heuberger
   - 09 abr 2009

linha 105: System.exit(0); voce está forçando o sistema, ou seja, a máquina virtual a terminar. Isso implica em fechar/parar tudo, tanto faz se for um JFrame, um JDialog, um processamento rodando no background... tudo que estiver rodando na máquina virtual será terminado. Para fechar a janela use o setVisible(false) ou dispose() do JFrame. #Código... if(opcao == JOptionPane.YES_OPTION) dispose(); // ou CadastroClientes.this.dispose(); ... o dispose() libera os recursos usados (serão recriados se necessário) o setVisible(false) apenas [i]esconde[/i] o JFrame []]

0
|
0

Elton Fonseca
   - 09 abr 2009

Muito obrigado! Mais tarde eu vejo se irá funcionar no meu código. Valeu pela explicação!

0
|
0

Carlos Naves
   - 06 jun 2010


Citação:
="exmokvra"]calma^^ bem mais fácil no teu JFrame filho tem uma opção "setDefaultCloseOperation()" com vários parâmetros o último provavelmente é "exit_on_close" (se tu criou no netbeans, claro) troca esse parametro para "hide_on_close" =)
Valeu exmokvra... sua dica foi fundamental para mim... no meu caso usei o parametro DISPOSE para destruir quando clicar no fechar. Obrigado.

0
|
0

Sidney
   - 01 jun 2016


Citação:
="exmokvra"]calma^^ bem mais fácil no teu JFrame filho tem uma opção "setDefaultCloseOperation()" com vários parâmetros o último provavelmente é "exit_on_close" (se tu criou no netbeans, claro) troca esse parametro para "hide_on_close" =)
Vlw cara, eu fiz assim, mas eu percebi que a opção hide só faz esconder o frame, dai eu vi também tem a opção dispose que fecha o frame sem fechar o pai.

0
|
0