Pode parer imbecil minha pergunta, mas realmente não estou sabendo como fazer.
Alguém sabe me informar como fechar um Frame? Tipo o comando “Close” do Delphi? Tipo cliclar no icone “X” de fechar da janela, mas quero um botão q faça isso…
O problema do hide(), dispose() ou setVisivle(false) é que com eles não passa no evento “windowClosing”…
eu dou uma mensagem no windowClosing… fechando o Frame pelo “X” de fechar passa corretamente e exibe minha mensagem, com esses metodos acima não passa no windowClosing e minha mensagem não aparece…
é JFrame sim mas o System.exit(0) não vai sair da aplicação?
Não é isso que eu quero.
Tenho duas telas, uma chama a outra, quero fechar a segunda e continuar na aplicação.
Containertela=getContentPane();tela.setLayout(newFlowLayout());JButtonbtn=newJButton("Abrir Outro JFrame");btn.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){SeguntaTelasegTela=newSeguntaTela();segTela.setVisible(true);}});tela.add(btn);setSize(300,150);setLocationRelativeTo(null);setVisible(true);}publicstaticvoidmain(String[]args){FecharJFrameapp=newFecharJFrame();app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}
Containertela=getContentPane();tela.setLayout(newFlowLayout());JButtonbtn=newJButton("hide()");btn.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){hide();}});JButtonbtn2=newJButton("dispose()");btn2.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){dispose();}});JButtonbtn3=newJButton("setVisible(false)");btn3.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){setVisible(false);}});JButtonbtn4=newJButton("System.exit(0)");btn4.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){System.exit(0);}});JLabellabel=newJLabel("Experimente Fechar com 'ALT + F4' ou 'X' da Barra de Titulos");JLabellabel2=newJLabel("Alguém sabe fechar com mesmo efeito do 'ALT + F4'?");tela.add(btn);tela.add(btn2);tela.add(btn3);tela.add(btn4);tela.add(label);tela.add(label2);EventWindowClosingeventClosing=newEventWindowClosing(this);this.addWindowListener(eventClosing);setSize(600,150);setLocationRelativeTo(null);}
}
private class EventWindowClosing extends WindowAdapter {
private JFrame owner;
Containertela=getContentPane();tela.setLayout(newFlowLayout());JButtonbtn=newJButton("Abrir Outro JFrame");btn.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){SeguntaTelasegTela=newSeguntaTela();segTela.setVisible(true);}});tela.add(btn);setSize(300,150);setLocationRelativeTo(null);setVisible(true);}publicstaticvoidmain(String[]args){FecharJFrameapp=newFecharJFrame();app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}
Containertela=getContentPane();tela.setLayout(newFlowLayout());JButtonbtn=newJButton("hide()");btn.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){hide();}});JButtonbtn2=newJButton("dispose()");btn2.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){dispose();}});JButtonbtn3=newJButton("setVisible(false)");btn3.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){setVisible(false);}});JButtonbtn4=newJButton("System.exit(0)");btn4.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){System.exit(0);}});JLabellabel=newJLabel("Experimente Fechar com 'ALT + F4' ou 'X' da Barra de Titulos");JLabellabel2=newJLabel("Alguém sabe fechar com mesmo efeito do 'ALT + F4'?");tela.add(btn);tela.add(btn2);tela.add(btn3);tela.add(btn4);tela.add(label);tela.add(label2);EventWindowClosingeventClosing=newEventWindowClosing(this);this.addWindowListener(eventClosing);setSize(600,150);setLocationRelativeTo(null);}
}
private class EventWindowClosing extends WindowAdapter {
private JFrame owner;
Ola, pelo que eu entendi, você deseja executar sua janelinha de mensagem tanto quando fechando com o “X” quanto com o botão correto?!
Logo eu sugiro que vc dento do metodo ActionPerformed do seu botão vc lance esta exeção especifica:
public void botaoActionPerformed(MouseEvent me) throws WindowClosing { //não sei a chamada da exeption, ai vc vê lá
//seus tratamentos
throw(new WindowClosing);
this.defuse();
//encerrando a janela
}