Comment enregistrer les options d'application avant la sortie?
-
23-09-2019 - |
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!
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
Peut-être le suivant vous aidera.
-
Tout d'abord u besoin de lire votre fichier de propriétés. Voir doc
Properties properties = new Properties(); try { properties.load(new FileInputStream("filename.properties")); } catch (IOException e) { System.err.println("Ooops!"); }
-
Deuxième ajouter gestionnaire d'événements à votre fenêtre, ce qui permettra d'économiser vos données dans file.All de propriété que vous devez enregistrer tout mettre en propriétés par exemple et le stocker sur la sortie
addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { try { properties.store(new FileOutputStream("filename.properties"), null); } catch (IOException e) { } } });
C'est tout, si je l'avais compris vous corriger)
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();
}