2010-05-28 14 views
9

Cómo evitar cerrar la aplicación Java swing, cuando el usuario hace clic en el botón Cerrar?Evite cerrar la aplicación Java swing

+1

Aquí es una pregunta más básica: Si los usuarios no pueden salir de su aplicación mediante el cierre de la ventana, ¿cómo se supone dejar de fumar? – Avrom

Respuesta

12

frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); en su marco principal debe evitar eso.

El método setDefaultCloseOperation(int) le permite elegir qué hacer cuando el usuario cierra el JFrame:

  • DO_NOTHING_ON_CLOSE (definido en WindowConstants): No hacer nada; requiere que el programa maneje la operación en el método de cierre de ventana de un objeto WindowListener registrado.

  • HIDE_ON_CLOSE (definido en WindowConstants): ocultar automáticamente el bastidor después de invocar cualquier objetos WindowListener registrados.

  • DISPOSE_ON_CLOSE (definido en WindowConstants): ocultar automáticamente y disponer el bastidor después de invocar ningún objeto WindowListener registrados.

  • EXIT_ON_CLOSE (definido en JFrame): salga de la aplicación utilizando el método de salida Sistema . Úselo solo en las aplicaciones .

+0

¿me puede dar un ejemplo de cómo puedo ver este evento cuando el usuario cierra la ventana? Quiero restablecer algunas variables estáticas antes de que se elimine el marco, pero no puedo encontrar información sobre cómo hacerlo. Al igual que en la próxima recarga, el marco actúa incorrectamente debido a los valores ya establecidos de esas variables – Johnydep

+0

@Johnydep - No debería hacer preguntas en los comentarios, sino como una [pregunta] completa (http://stackoverflow.com/questions/ preguntar), así que hazlo la próxima vez. Respuesta corta: el JFrame que ha creado es una Ventana, y puede agregar un WindowListener. – Gnoupi

+0

Bien, tendré cuidado la próxima vez;) – Johnydep

2
JFrame frame = new JFrame(); 
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); 

frame.addWindowListener(new WindowAdapter() { 
// handle window closing 
}); 
Cuestiones relacionadas