Question

Je l'ai fait une demande et j'ai besoin d'enregistrer certaines options avant la sortie. (Quelque chose comme dimension de la fenêtre, ..., qui sera écrit dans un fichier.)

Le cadre principal est fixé à ceci:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Comment puis-je enregistrer les options qui me intéresse? (Avant de quitter bien sûr)

Merci!

Était-ce utile?

La solution

Si vous voulez juste faire quelque chose lorsque l'application est en cours d'arrêt, vous pouvez brancher l'arrêt en utilisant ce code:

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

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

Cependant, cela ne vous permettra pas de ne pas fermer la fenêtre. Si vous avez besoin de vérifier quelque chose avant de sortir vraiment, vous pouvez remplacer le l'événement de windowClosing:

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

Notez que la première solution - à l'aide du crochet d'arrêt - a l'avantage qu'il ne soit pas lié à un événement de la fenêtre, et sera exécutée même si l'application est arrêtée par un autre événement (sauf, bien sûr, si le processus Java est tué brutalement).

Autres conseils

Vous pouvez enregistrer un WindowListener et enregistrer vos options dans la méthode windowClose.

Et bien sûr,

frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

Je ne sais pas cela s'applique à votre situation, mais il peut à d'autres qui surfent à ce fil. Ma demande a une main () et à la fin a la boucle while (! Shell.isDisposed). Lorsque l'application exécute cette boucle va, et lorsque l'application est fermée qui se termine en boucle et il tombe à ce qui est pour toujours dans la principale méthode. C'est là que je mets un chèque si l'éditeur est sale et si les préférences ont changé et gérer ces conditions. Ma méthode associée à la fermeture de fichiers dispose le shell et appelle la méthode closeCurrent (), mais si quelqu'un clique sur le « x » icône près de la fenêtre, il tombe ici et je vérifie à nouveau si quelque chose est sale et sauf si je dois.

while (!shlCpbtool.isDisposed()) {
        if (!display.readAndDispatch()) {
            display.sleep();
        }
    }
    // exit
    if(dirty){
        closeCurrent();
    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top