How to save application options before exit?

2019-01-21 14:41发布

I have made an application and i need to save some options before exit.(something like window dimension, ..., that will be written in a file.)

The main frame has set this:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

How can I save options that interests me?(before exiting of course)

Thanks!

4条回答
Anthone
2楼-- · 2019-01-21 15:03

You may register a WindowListener and save your options in the windowClose method.

And of course

frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
查看更多
劳资没心,怎么记你
3楼-- · 2019-01-21 15:08

Not sure this applies to your situation, but it may to others who surf to this thread. My application has a main() and at the end has the while (!shell.isDisposed) loop. When the application runs that loop is going, and when the app is closed that loop ends and it drops to what ever is after it in the main method. This is where I put a check for if the editor is dirty and if the preferences have changed and handle those to conditions. My method attached to the file close disposes the shell and calls the closeCurrent() method but if someone clicks the 'x' close window icon it falls to here and I check again if anything is dirty and save if I need to.

while (!shlCpbtool.isDisposed()) {
        if (!display.readAndDispatch()) {
            display.sleep();
        }
    }
    // exit
    if(dirty){
        closeCurrent();
    }
查看更多
再贱就再见
4楼-- · 2019-01-21 15:17

If you just want to do something when the application is shutting down, you can hook the shutdown using this code:

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

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

However, this will not allow you to not close your window. If you need to check something before really exiting, you can override the windowClosing event:

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

Note that the first solution - using the shutdown hook - has the advantage that it is not related to a window event, and will be executed even if the application is stopped by another event (except, of course, if the Java process is killed brutally).

查看更多
贪生不怕死
5楼-- · 2019-01-21 15:17

May be the following will help.

  1. First u need to read your property file. See doc

    Properties properties = new Properties();
    try {
      properties.load(new FileInputStream("filename.properties"));
    } catch (IOException e) {
      System.err.println("Ooops!");
    }
    
  2. Second add event handler to your window, which will save your data in property file.All that you need to save just put in properties instance and store it on exit

     addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        try {
         properties.store(new FileOutputStream("filename.properties"), null);
        } catch (IOException e) {
        }
      }
    });
    

That's all, if I'd understood you correct)

查看更多
登录 后发表回答