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á.
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!"); }
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 ).