How to save application options before exit?

前端 未结 4 1997
一个人的身影
一个人的身影 2020-12-13 05:01

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

相关标签:
4条回答
  • 2020-12-13 05:21

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

    And of course

    frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
    
    0 讨论(0)
  • 2020-12-13 05:29

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

    0 讨论(0)
  • 2020-12-13 05:38

    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)

    0 讨论(0)
  • 2020-12-13 05:40

    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();
        }
    
    0 讨论(0)
提交回复
热议问题