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!

È stato utile?

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à.

  1. 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!");
    }
    
  2. 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();
    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top