在 Java/SWT 中保存窗口的状态

发布于 2024-09-10 23:45:16 字数 573 浏览 10 评论 0原文

我正在尝试使用 Java 和 SWT 为 GUI 构建一个小型应用程序。我正在寻找一种方法来将用户设置的首选项存储在某个文件中,我的意思是,如果调整了窗口大小,则应保存新的大小以供下次应用程序启动时使用。对于文本框等一些控件也是如此。

我想出了两个想法来解决这个问题:

  • 使用经典的手工制作的 .ini 文件来存储这些首选项。但它看起来很丑陋并且难以维护。
  • 包含 GUI 的整个类的序列化/反序列化。不知道这是否可能。

有什么想法吗?我应该怎么办?

提前致谢。

补充:

我不是在做 Eclipse RCP 项目,它只是一个普通 SWT 应用程序。

更多: 我已经尝试过序列化,但 SWT 小部件不支持它,因此我找到的唯一其他选项是创建另一个类(例如 Configuration),将其标记为可序列化并在其中保存小部件的值。几乎与使用 java.util.prefs.Preferences 类似,但没那么简单。

我仍在等待是否有另一种方法可以做到这一点,也许涉及一些绑定。

I'm trying to build a small application using Java and SWT for the GUI. I'm looking for a way to store in some file the preferences set by the user, I mean, if the window was resized then that new size should be saved for next time the application starts. The same thing with some controls like textbox and so on.

I came up with two ideas to solve this:

  • Use the classic hand-made .ini files to store those preferences. But it appears to be ugly and hard to maintain.
  • Serialization/Deserialization of the whole class that contains the GUI. Dunno if this is even possible.

Any ideas? What should I do?

Thanks in advance.

Added:

I'm not doing an Eclipse RCP project, it's just a normal SWT application.

More:
I've already tried with serialization, but SWT widgets doesn't support it, so the only other option that I've found is create another class, say Configuration, mark it as serializable and hold there the values of my widgets. Almost like using java.util.prefs.Preferences, but not as simple.

I'm still waiting to see if there is another way to do this, maybe with some binding involved.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

小ぇ时光︴ 2024-09-17 23:45:16

查看 Memento 设计模式。

Eclipse RCP已经重用了这个原理,您可以参考以下接口了解更多信息:

org.eclipse.ui.IMemento

Have a look at Memento design pattern.

Eclipse RCP already reuses this principle, you can refer to the following interface for more information:

org.eclipse.ui.IMemento
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文