Ejecutar la función de cerrar JFrame

void terminate() {}
protected JFrame frame = new JFrame();

¿Cómo puedo obtener frame para ejecutar la función terminate cuando presione el botón de cierre?

Edit: he intentado ejecutar esto, pero por alguna razón no se prueba de impresión (sin embargo, el programa se cierra). ¿Alguien tiene una idea de lo que podría ser el problema?

frame.addWindowListener(new WindowAdapter() {
    public void WindowClosing(WindowEvent e) {
        System.out.println("test");
        frame.dispose();
    }
});
InformationsquelleAutor Mattias | 2013-05-04

4 Kommentare

  1. 19

    Puede utilizar addWindowListener:

    frame.addWindowListener(new WindowAdapter()
    {
        public void windowClosing(WindowEvent e)
        {
            ... //call terminate
            ...
        }
    });

    Ver void windowClosing(WindowEvent e) y La Clase WindowAdapter demasiado.

    • Voy a tener que crear una nueva clase que extienda JFrame e implementa WindowAdapter? (o es aceptar para guardar fotograma como un JFrame?) La verdad es que no funciona, y me sale el aviso «El método WindowClosed(WindowEvent) del tipo new WindowAdapter(){} nunca se utiliza localmente» en la WindowClosing función
    • Publica tu código después de los cambios realizados.
    • Ok, he añadido el código como una edición.
    • windowClosing y no WindowClosing con mayúsculas W.
    • Gracias, es un trabajo ahora 🙂
  2. 15

    Usted no sólo tiene que añadir la ventana de escucha, tienes que establecer el valor predeterminado de cerrar la operación no hacer nada en cerrar. Esto permite que el código a ejecutar.

        frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent event) {
                exitProcedure();
            }
        });

    Finalmente, usted tiene a una llamada al Sistema exit para detener realmente su programa de ejecución.

    public void exitProcedure() {
        frame.dispose();
        System.exit(0);
    }
    • +1 por la respuesta, pero especialmente @Override. Muy buenos los consejos. No (se replantea) excelente asesoramiento. 🙂
    • +1. De hecho. Estoy con @AndrewThompson 🙂
  3. 1

    Si usted desea cancelar su programa después de que el JFrame es cerrado, se tiene para establecer el valor predeterminado cerrar la operación en el JFrame.

    En el constructor de su JFrame escribir:

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    Si sólo quieres llamar a un método cuando se cierra la ventana y no terminar todo el programa, de ir con la respuesta de Maroun.

    • Me gustaría hacer las dos (ejecutar una función, luego de terminar). Aquí está mi código actual: marco.addWindowListener(new WindowAdapter() { public void WindowClosing(WindowEvent e) { System.a cabo.println(«prueba»); frame.dispose(); } }); El problema es que no impresión «de prueba». ¿Tiene usted alguna idea de lo que podría ser el problema?
    • El método es «windowClosing» no «WindowClosing». Usted necesita para reemplazar, así que tiene que ser el nombre exacto.
  4. 1

    Marco.método dispose() no terminar el programa. Para terminar el programa que usted necesita para el Sistema de llamada.exit(0) método

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea