Confirmación al cerrar un JFrame en Java (Netbeans)

Logo Java

Muchas veces en las aplicaciones java que realizamos la pantalla principal esta definida en un JFrame, entonces deseamos añadir funciones como la de pedir confirmacion al usuario  al querer cerrar la aplicación, muy util ya que puede que un clic se le escape y termine cerrando la aplicación sin querer, aunque parezca tonto podría ser una mala experiencia de usuario y mas para los usuarios mas exigentes.

veamos como hacerlo:

Confirmación al cerrar un JFrame en Java

Aquí el método que podemos pegar en cualquier parte del código del JFrame:

 public void cerrar(){
 Object [] opciones ={"Aceptar","Cancelar"};
 int eleccion = JOptionPane.showOptionDialog(rootPane,"En realidad desea realizar cerrar la aplicacion","Mensaje de Confirmacion",
 JOptionPane.YES_NO_OPTION,
 JOptionPane.QUESTION_MESSAGE,null,opciones,"Aceptar");
 if (eleccion == JOptionPane.YES_OPTION)
 {
 System.exit(0);
 }else{
 }

Luego nos dirigimos a la propiedades el JFrame para configurar el evento.

Confirmación al cerrar un JFrame en Java

windowClosing

Al seleccionar el evento nos llevara a la ventana de código y programaremos el llamado a nuestro método cerrar

asi:

 private void formWindowClosing(java.awt.event.WindowEvent evt) {
 cerrar();
 }

Solo queda un ultimo paso y es en las propiedades el Jframe configurar DO_NOTHING para evitar que el JFrame cierre al pulsar la X
Confirmación al cerrar un JFrame en Java

Como resultado al ejecutar y presionar en la X obtendremos:

Confirmación al cerrar un JFrame en Java

Finalmente de esta forma, podemos cuidar al usuario en caso de hacer clic de forma accidental en el botón cerrar; dando una última oportunidad de confirmar si cierra o no el Software. Siempre será una buena práctica y más cuando posiblemente existan datos que aún no están salvaguardados.

9 comentarios

  1. Jose Moreno Contestar

    Maestro , rootpane se me sale error , intente Import javax.swing.JRootPane , resulta «remove unused import», seria grande su respuesta , gracias

    • Ivan David Lopez Autor de la entradaContestar

      Tranquilo amigo, solo cambia RootPane por this, así:

      1
      2
      3
      int eleccion = JOptionPane.showOptionDialog(this,"En realidad desea realizar cerrar la aplicacion","Mensaje de Confirmacion",
      JOptionPane.YES_NO_OPTION,
      JOptionPane.QUESTION_MESSAGE,null,opciones,"Aceptar");

      Gracias por participar
      Saludos!

  2. Malex RM Contestar

    imagenes del tutorial caídas….. resolver por favor,…. gracias
    1-05-17

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *