Java - Gestionar el cierre del programa

 
Vista:
Imágen de perfil de Arturo
Val: 6
Ha aumentado su posición en 4 puestos en Java (en relación al último mes)
Gráfica de Java

Gestionar el cierre del programa

Publicado por Arturo (3 intervenciones) el 17/05/2020 13:49:51
Hola a todos,
en mi programa debo gestionar el cierre del mismo desde diferentes sitios (el menú principal, algún formulario, el botón X del la ventana principal...).
Para ello uso este código

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Pide confirmación para salir del programa
if ( JOptionPane.showConfirmDialog(null, "¿Desea salir del programa?", "Confirmar salida", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == 0 ){
        // Cierra la conexion con la base de datos, si está activa
    try {
        if (conn != null) {
            conn.close();
        }
    } catch (SQLException ex) {
        // System.out.println(ex.getMessage());
        JOptionPane.showMessageDialog(this, "No se ha podido desconectar","Desconexión",JOptionPane.ERROR_MESSAGE);
    }
 
    // Salir de la aplicación
    System.exit(0);
}
El problema es que ese código debo repetirlo en varios sitios diferentes, lo cual me parece una perdida de tiempo y recursos importante.
He intentado insertar ese código en el evento windowClosing pero no funciona ya que no me muestra el cuadro de confirmación.

¿Donde debería insertar ese código para que controle el cierre del programa desde un único lugar?

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Gestionar el cierre del programa

Publicado por Kabuto (1381 intervenciones) el 17/05/2020 16:56:41
Además de añadirle ese WindowListener al JFrame principal, prueba a añadir esta línea al constructor del JFrame, para asegurarte de que pulsar el boton X de la ventana no cierra el programa por su propia cuenta.

1
setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar