退出前如何保存应用程序选项?

我已经创建了一个应用程序,我需要在退出之前保存一些选项。(类似于窗口维度,……,将写入文件中。)

主框架设置如下:

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) { } } }); 

这就是全部,如果我理解你的正确的话)

您可以注册WindowListener并将选项保存在windowClose方法中。

而且当然

 frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); 

不确定这适用于您的情况,但也可能适用于冲浪到此线程的其他人。 我的应用程序有一个main(),最后有while(!shell.isDisposed)循环。 当应用程序运行时,循环正在进行,并且当应用程序关闭时,循环结束并且它在主方法中下降到之后的循环。 这是我检查编辑器是否脏,以及首选项是否已更改并处理条件的地方。 我附加到文件关闭的方法处理shell并调用closeCurrent()方法,但是如果有人点击’x’关闭窗口图标,它会落到这里,我再次检查是否有任何脏东西,如果我需要,请保存。

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