Pregunta

Me han hecho una solicitud y tengo que ahorrar algunas opciones antes de la salida. (Algo así como la dimensión de la ventana, ..., que se escribirá en un archivo.)

El bastidor principal ha establecido esta:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

¿Cómo puedo guardar las opciones que me interesa? (Antes de salir, por supuesto)

Gracias!

¿Fue útil?

Solución

Si lo que desea es hacer algo cuando la aplicación se está cerrando, se puede conectar el apagado utilizando este código:

    Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {

        public void run() {
            // Do what you want when the application is stopping
        }
    }));

Sin embargo, esto no le permitirá a no cerrar la ventana. Si es necesario comprobar algo antes de salir realmente, puede anular la windowClosing evento:

addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
        // Do what you want when the window is closing.
    }
});

Tenga en cuenta que la primera solución - con el gancho de cierre - tiene la ventaja de que no está relacionado con un evento de ventana, y se ejecutará incluso si la aplicación se detiene por cualquier otro acontecimiento (excepto, por supuesto, si el proceso de Java es matado brutalmente).

Otros consejos

Puede ser la siguiente ayuda voluntad.

  1. En primer lugar u necesita leer el archivo de propiedades. Ver doc

    Properties properties = new Properties();
    try {
      properties.load(new FileInputStream("filename.properties"));
    } catch (IOException e) {
      System.err.println("Ooops!");
    }
    
  2. Segundo complemento controlador de eventos a la ventana, lo que permitirá ahorrar sus datos de propiedad file.All que necesita ahorrar sólo hay que poner en las propiedades de instancia y almacenarla en la salida

     addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        try {
         properties.store(new FileOutputStream("filename.properties"), null);
        } catch (IOException e) {
        }
      }
    });
    

Eso es todo, si yo había entendido que correcto)

Se puede registrar un WindowListener y guardar sus opciones en el método windowClose.

Y, por supuesto

frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

No es seguro que esto se aplica a su situación, pero es posible que otras personas que navegan a este hilo. Mi aplicación tiene un main () y al final tiene el mismo tiempo (! Shell.isDisposed) bucle. Cuando la aplicación se ejecuta en bucle que va, y cuando la aplicación está cerrada y que los extremos del bucle se reduce a lo que cada vez es después de que en el método principal. Aquí es donde pongo un cheque por si el editor está sucio y si las preferencias han cambiado y manejar aquellos a condiciones. Mi método asociado al archivo de cierre dispone la cáscara y llama al método closeCurrent () pero si alguien hace clic en la ventana estrecha icono 'x' corresponde al aquí y comprobar de nuevo si algo está sucio y ahorrar si necesito.

while (!shlCpbtool.isDisposed()) {
        if (!display.readAndDispatch()) {
            display.sleep();
        }
    }
    // exit
    if(dirty){
        closeCurrent();
    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top