¿Cuál es la diferencia entre estos dos métodos – System.exit() y JFrame.dispose()?

Si queremos cerrar una aplicación Java Swing cuando se hace clic en un botón, que método debo utilizar?

  • en el botón de clic. se acerca independiente JButton con el Sistema.exit(0) o de botón en JFrames de la Barra de herramientas
  • primera opción
InformationsquelleAutor Adil | 2012-11-13

4 Comentarios

  1. 52

    System.exit(); hace que la máquina virtual de Java para terminar completamente.

    JFrame.dispose(); hace que el JFrame ventana para que sea destruido y limpiado por el sistema operativo. De acuerdo a la documentación, esto puede causar que la máquina virtual de Java para terminar si no hay otras Ventanas disponibles, pero esto realmente debe considerarse como un efecto secundario, en lugar de la norma.

    El que usted elija realmente depende de su situación. Si usted desea cancelar todo en el actual Java VM, se debe utilizar System.exit() y todo va a ser limpiado. Si sólo desea destruir la ventana actual, con el efecto secundario de que se va a cerrar la máquina virtual de Java si esta es la única ventana, a continuación, utilizar JFrame.dispose().

    • El problema que yo veo con el Sistema.la salida es que realmente mata a la aplicación, incluso si el hilo es, por ejemplo, escribir en un archivo. A mí me parece que la mayoría de las aplicaciones de cerrar la ventana, que esperar para el resto de los hilos para completar. Pero como el AWT hilos no se puede completar, tenemos un problema ¿cómo implementar esto en Java correctamente.
    • gracias por la documentación. Yo estaba buscando este
  2. 12

    JFrame.dispose()

    public void dispose()

    Libera todos los de la pantalla nativa de los recursos utilizados por esta Ventana, de sus subcomponentes, y todos los de su propiedad a los niños. Es decir, los recursos destinados a estos Componentes serán destruidos, la memoria que consumen será devuelto al sistema operativo, y se marcarán como undisplayable.
    La Ventana y sus componentes pueden hacer visible de nuevo por la reconstrucción de los recursos nativos con una llamada posterior a pack o mostrar. Los estados de la nueva Ventana y sus componentes será idéntica a la de los estados de los objetos en el punto donde la Ventana que se dispuso (no contable para modificaciones adicionales entre esas acciones).

    Nota: Cuando el último visible dentro de la ventana de la máquina virtual Java (VM) es eliminado, la máquina virtual puede terminar. Ver AWT Problemas de Subprocesamiento para obtener más información.

    Sistema.exit()

    public static void exit(int status)

    Termina la actualidad se ejecuta la Máquina Virtual de Java. El argumento sirve como un código de estado; por convención, un valor distinto de cero código de estado indica terminación anormal.
    Este método llama al método de salida en clase en tiempo de ejecución. Este método jamás vuelve a la normalidad.

    La llamada System.exit(n) es equivalente a la llamada:

    Runtime.getRuntime().exit(n)
  3. 5

    Además de lo anterior, usted puede utilizar el System.exit() devolver un código de salida que puede ser muy usuefull especialmente si tu llamado el proceso de forma automática utilizando el System.exit(code); esto puede ayudar a determinar por ejemplo si se ha producido un error durante la ejecución.

  4. 4
    • Si tiene varias ventanas abiertas y sólo quiere cerrar el que se cerró el uso JFrame.dispose().

    • Si desea cerrar todas las ventanas y terminar con el uso de la aplicación System.exit()

Dejar respuesta

Please enter your comment!
Please enter your name here