studio sirve settitle que programacion para móviles how edición desarrollo curso aplicaciones java swing desktop-application processing

java - sirve - programacion android pdf 2018



¿Cómo guardar las opciones de la aplicación antes de salir? (4)

He creado una aplicación y necesito guardar algunas opciones antes de salir (algo como la dimensión de la ventana, ..., que se escribirá en un archivo).

El marco principal ha establecido esto:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

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

¡Gracias!


No estoy seguro de que esto se aplique a su situación, pero puede que lo haga a otros que naveguen a este hilo. Mi aplicación tiene un main () y al final tiene el bucle while (! Shell.isDisposed). Cuando la aplicación se ejecuta, ese bucle se está ejecutando, y cuando la aplicación se cierra, dicho bucle finaliza y cae a lo que sea que haya después en el método principal. Aquí es donde pongo un chequeo para ver si el editor está sucio y si las preferencias han cambiado y las manejo a las condiciones. Mi método adjunto al cierre del archivo elimina el shell y llama al método closeCurrent (), pero si alguien hace clic en el ícono de la ventana ''x'' cerrar, aparece aquí y verifico de nuevo si hay algo sucio y guardo si es necesario.

while (!shlCpbtool.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } // exit if(dirty){ closeCurrent(); }


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

Y por supuesto

frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);


Puede ser lo siguiente ayudará.

  1. Primero necesitas leer tu archivo de propiedades. Ver doc

    Properties properties = new Properties(); try { properties.load(new FileInputStream("filename.properties")); } catch (IOException e) { System.err.println("Ooops!"); }

  2. En segundo lugar, agregue el controlador de eventos a su ventana, que guardará sus datos en el archivo de propiedades. Todo lo que necesita para guardar simplemente coloque en la instancia de propiedades y guárdelo 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 te hubiera entendido bien.


Si solo desea hacer algo cuando la aplicación se está cerrando, puede enganchar el cierre con 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á no cerrar la ventana. Si necesita verificar algo antes de salir realmente, puede anular el evento windowClosing :

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, que utiliza el gancho de apagado, tiene la ventaja de que no está relacionada con un evento de ventana, y se ejecutará incluso si otro evento detiene la aplicación (excepto, por supuesto, si el proceso de Java se mata brutalmente ).