Preguntar antes de cerrar un frame

Estoy aprendiendo a programar en java y por ello tengo algunas dudas, por lo cual necesito de su ayuda
mis dudas son las siguientes :
Después de que pulse el botón cerrar del frame quiero que aparezca un cuadro para confirmar o cancelar el cierre del frame, o sea evitar que el frame se cierre en automático
también deseo conocer un método para cerrar un frame sin necesidad de pulsar el botón cerrar, intente con el system. Exit pero este cerro todo el programa y no el unico frame que queria cerrar.
Sobre todo me serian útiles ejemplos con código.
Respuesta
1
Para gestionar frames al igual que ocurre con el resto de eventos en Swing es crear un "listener" que gestione el evento de "cerrrar".
El frame hereda de Window, que lanza un evento de "cerrando" al pulsar el botón de cerrar.
No se cual será la mejor forma, pero al menos yo lo he hecho así.
En el JFrame
public class MiFrame extends JFrame {
...
// En la definicion .
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
this.addWindowListener(new WindowListener (){
...
public void windowClosing(WindowEvent e) {
System.out.println ("------->> Confirmar");
abreDialogo();
}
...
}
// Luego el método abreDialogo()
public void abreDialogo () {
JDialog dialog = new JDialog (this);
JDialog dialog = new JDialog (this);
JButton boton = new JButton ("Cierra");
boton.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e) {
setVisible(false);
dispose();
cierra();
}
});
dialog.getContentPane().add(boton);
dialog.pack();
dialog.setVisible(true);
}
// y al final el metodo Cierra, que cierra el frame si
// se pulsa el boton
private void cierra () {
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(false);
dispose();
}
Le doy gracias por su ayuda la información que me proporciono me sera muy útil.
Tengo otra cuestión, espero que pueda aclararme algo sobre ella.
Estoy utilizando el método windowClosing para ocultar un frame(tengo entendido que este método no cierra un frame solo lo oculta), lo que deseo saber como es hacer que se muestre de nuevo el frame.
Eso es todo se le agradece su atención
El método para hacer visible o invisible un frame suele ser "setVisible(boolean)"
Haciendo que el valor de boolean sea true, se hace visible, con false, invisible.
El ejemplo que me dio me ayudo bastante, en esta linea :this.addWindowListener(new WindowListener()
cambie  new WindowListener() por new WindowAdapter() y todo listo, asi ya no me marco error.
Por su ayuda GRACIAS.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas