如何保存应用程序的选项之前退出?
-
23-09-2019 - |
题
我做了一个应用程序和我需要保存一些选项之前退出。(像窗口的尺寸,...,即将编写的文件。)
主框架已经设定这样的:
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过程被残杀)。
其他提示
可以下会有所帮助。
首先需要以读你的财产的文件。 看看医生
Properties properties = new Properties(); try { properties.load(new FileInputStream("filename.properties")); } catch (IOException e) { System.err.println("Ooops!"); }
第二添加事件的处理程序对你的窗口,这将保存你的数据在财产的文件。所有你需要的节省只是把性的实例和存储在退出
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(),并在年底有一段时间(!shell.isDisposed)循环。 当应用程序运行这个循环是怎么回事,当应用程序被关闭是循环结束并将其放到什么都更后的主要方法。 这就是我把一张支票,如果编辑器是脏的,如果偏好已经改变,处理那些条件。 我连接到文件关闭的方法来配置的外壳,并调用closeCurrent()方法,但如果有人点击“X”关闭窗口图标,它属于这里,我再次检查如果有什么是脏,保存,如果我需要。
while (!shlCpbtool.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
// exit
if(dirty){
closeCurrent();
}
不隶属于 StackOverflow