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.
🌟 ¡Visita Nuestra Tienda para Programadores! 🌟Descubre Códigos Fuente, Cursos, Software, Computadoras, Accesorios y Regalos Exclusivos. ¡Todo lo que necesitas para llevar tu programación al siguiente nivel!
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
Como resultado al ejecutar y presionar en la X obtendremos:
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.
Buenísimo, es muy explicativo y bien detallado como usar los jframe. 🙂 ¡Gracias man!
Muchas gracias por tu comentario Christian, vuelve cuando quieras 🙂
Maestro , rootpane se me sale error , intente Import javax.swing.JRootPane , resulta «remove unused import», seria grande su respuesta , gracias
Tranquilo amigo, solo cambia RootPane por this, así:
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!
excelente código
Muchas gracias, era lo que buscaba
muchas gracias hermano estaba batallando carnal saludos desde mexico slp
Gracias me sirvió de mucho!
imagenes del tutorial caídas….. resolver por favor,…. gracias
1-05-17