我做了一个应用程序和我需要保存一些选项之前退出。(像窗口的尺寸,...,即将编写的文件。)

主框架已经设定这样的:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

我怎么可以节省的选项感兴趣的我吗?(退出之前的课程)

谢谢!

有帮助吗?

解决方案

如果你只是想这样做,当应用程序被关闭的东西,你可以使用此代码挂钩关机:

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

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

不过,这不会让你不敢靠近你的窗口。如果你真的需要退出前要检查什么,你可以重写的 windowClosing 事件:

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

注意,第一溶液 - 利用关闭挂钩 - 具有的优点在于它是不相关的窗口事件,并且如果该应用程序由另一个事件(除非,当然,停止将即使执行如果Java过程被残杀)。

其他提示

可以下会有所帮助。

  1. 首先需要以读你的财产的文件。 看看医生

    Properties properties = new Properties();
    try {
      properties.load(new FileInputStream("filename.properties"));
    } catch (IOException e) {
      System.err.println("Ooops!");
    }
    
  2. 第二添加事件的处理程序对你的窗口,这将保存你的数据在财产的文件。所有你需要的节省只是把性的实例和存储在退出

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

这就是的,如果我理解正确的)

不知道这适用于您的情况,但它可能给其他人谁冲浪此主题。 我的应用程序有一个main(),并在年底有一段时间(!shell.isDisposed)循环。 当应用程序运行这个循环是怎么回事,当应用程序被关闭是循环结束并将其放到什么都更后的主要方法。 这就是我把一张支票,如果编辑器是脏的,如果偏好已经改变,处理那些条件。 我连接到文件关闭的方法来配置的外壳,并调用closeCurrent()方法,但如果有人点击“X”关闭窗口图标,它属于这里,我再次检查如果有什么是脏,保存,如果我需要。

while (!shlCpbtool.isDisposed()) {
        if (!display.readAndDispatch()) {
            display.sleep();
        }
    }
    // exit
    if(dirty){
        closeCurrent();
    }
scroll top