Probé un windowClosing
, funciona, cuando presiono el botón de cerrar, pero cuando uso Cmd+Q
para cerrar, no se está llamando al windowClosing
, ¿cómo puedo solucionarlo? ¿Debo detectar Cmd+Q
en mac, Alt + F4
en Windows a través de la escucha de teclas? ¿Es un oyente general para cerrar la ventana, lo que sea mediante el botón de cerrar o el teclado, o el evento Ctrl+Alt+Delete
o Cmd+Option+Esc
para centrarse matar? Gracias.¿Cómo detectar que JFrame está cerrado?
Respuesta
Parece que necesita agregar algunos KeyListeners
y una fábrica para detectar el que desea para un sistema operativo en particular.
no estoy seguro de cuál es la situación en los Macs, pero en Windows que presentamos lo mejor de devolución de llamada windowClosing() del botón de cierre; Alt-F4
; y si cierra la aplicación a través del administrador de tareas. No obtendrá la devolución de llamada si usa el administrador de tareas para matar el proceso, pero no lo esperaría de todos modos.
Ha recordado llamar al setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
en su instancia de JFrame, ¿verdad?
Se puede usar esta biblioteca OSX: com.apple.eawt.ApplicationListener
handleQuit(ApplicationEvent event)
probablemente hará el truco.
información de los documentos:
llama cuando la aplicación se envía el evento Quit. Este evento se genera cuando el usuario selecciona Salir del menú de la aplicación, cuando el usuario escribe Command-Q, o cuando el control de usuario hace clic en el ícono de su aplicación en el Dock y elige Salir. Puede aceptar o rechazar la solicitud para abandonar.
Por supuesto, esta solución no funcionará en Windows. Por lo que yo sé, no hay una solución universal, por lo que esta es probablemente la mejor manera de hacerlo.
hay un método más windowClosed() intente reemplazar método cosa. Espero que funcione para usted.
Como dijiste, se llama a WindowsClusing cuando haces clic en el botón (x). También estoy en un Mac y la forma en que sale el CMD + Q para enviar una señal a la aplicación está utilizando Runtime.addShutDownHook
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
// code to run when CMD+Q is pressed
}
}
- 1. Cómo detectar que MKMapView está disminuyendo/acercándose?
- 2. ¿Cómo detectar que Windows está bloqueado?
- 3. reconectar tcpsocket (o cómo detectar el socket cerrado)
- 4. Cómo detectar si un usuario ha cerrado sesión, en php?
- 5. nmap dice que el puerto está cerrado mientras que nestat dice que está escuchando
- 6. ¿Está CERRADO/FCLOSE en stdin se garantiza que es correcto?
- 7. ¿Cómo hacer que JFrame sea transparente?
- 8. Cómo evitar que JFrame se cierre
- 9. Acción cuando el formulario está cerrado
- 10. ¿Cómo detectar READ_COMMITTED_SNAPSHOT está habilitado?
- 11. Android Socket Exception "socket está cerrado"
- 12. Cómo TDD un JFrame?
- 13. ¿El proyecto Flying Saucer está cerrado?
- 14. ¿Por qué no está dispuesto/cerrado SqlConnection?
- 15. Actualizar página cuando está cerrado colorbox
- 16. java.io.IOException: BufferedInputStream está cerrado en Android 2.3
- 17. ¿Cómo detectar que UITableView está en modo de edición?
- 18. ¿Cómo detectar que se está moviendo un control?
- 19. Cómo detectar que UIScrollView se está desplazando o que está arrastrando
- 20. ¿Cómo comprobar si el socket está cerrado en Boost.Asio?
- 21. ¿Cómo puedo saber si un secuenciador está cerrado?
- 22. ¿Cómo elimino las cookies cuando el navegador está cerrado?
- 23. Cómo saber si un flujo BufferedReader está cerrado
- 24. Detectar cuando un formulario se ha cerrado C#
- 25. ¿Cómo enfocar un JFrame?
- 26. Cómo deshabilitar JFrame principal cuando abre nuevo JFrame
- 27. Cómo detectar cuando innerHTML está completo
- 28. iPhone: ¿Cómo detectar si iTunes está jugando?
- 29. ¿Cómo detectar cuando la pantalla está encendida?
- 30. Cómo detectar si un micrófono está presente
http://stackoverflow.com/questions/2061194/swing-on-osx-how -to-trap-command-q – dacwe
http://www.leepoint.net/notes-java/GUI/containers/10windows/12frameclose.html –
@TedWong ¿Encontró una solución a su problema? Por favor, publique su propia respuesta si lo hizo. – Igor