Come salvare le opzioni dell'applicazione prima di uscire?
-
23-09-2019 - |
Domanda
Ho fatto una domanda e ho bisogno di salvare alcune opzioni prima di uscire.(qualcosa di simile dimensione della finestra, ..., che verranno scritti in un file.)
Il telaio principale è impostato questo:
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Come posso salvare le opzioni che mi interessa?(prima di uscire di corso)
Grazie!
Soluzione
Se si vuole solo fare qualcosa quando l'applicazione è in fase di arresto, è possibile collegare l'arresto utilizzando questo codice:
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
public void run() {
// Do what you want when the application is stopping
}
}));
Tuttavia, questo non vi permetterà di non chiudere la finestra. Se avete bisogno di controllare qualcosa prima di uscire in realtà, è possibile ignorare la windowClosing
evento:
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
// Do what you want when the window is closing.
}
});
Si noti che la prima soluzione - utilizzando il gancio di arresto - ha il vantaggio di non essere collegato a un evento finestra, e verrà eseguita anche se l'applicazione viene arrestata da un altro evento (ad eccezione, ovviamente, se il processo Java viene ucciso brutalmente).
Altri suggerimenti
Potrebbe essere la seguente vi aiuterà.
Prima u bisogno di leggere i tuoi file delle proprietà. Vedi doc
Properties properties = new Properties(); try { properties.load(new FileInputStream("filename.properties")); } catch (IOException e) { System.err.println("Ooops!"); }
Aggiungere secondo gestore di eventi per la tua finestra, che permetterà di salvare i vostri dati in un file di proprietà.Tutto ciò che è necessario per salvare appena messo in proprietà di istanza e di conservarla in uscita
addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { try { properties.store(new FileOutputStream("filename.properties"), null); } catch (IOException e) { } } });
Questo è tutto, se ho capito giusto)
E 'possibile registrare un WindowListener e salvare le opzioni nel metodo windowClose.
E naturalmente
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
Non è sicuro questo vale per la vostra situazione, ma può ad altri che navigano a questo thread. La mia applicazione ha un main () e alla fine ha il tempo (! Shell.isDisposed) loop. Quando l'applicazione viene eseguita quel ciclo sta andando, e quando l'applicazione è chiusa che termina ad anello e si scende a che cosa mai è dopo che nel metodo principale. Questo è dove ho messo un assegno per se l'editor è sporco e se le preferenze sono cambiate e gestire quelli a condizioni. Il mio metodo allegato al file stretta dispone il guscio e chiama il metodo closeCurrent (), ma se un utente fa clic la 'x' Chiudi la finestra icona cade a qui e verificare di nuovo se qualcosa è sporco e salvare se ho bisogno di.
while (!shlCpbtool.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
// exit
if(dirty){
closeCurrent();
}