2

我正在使用 Swing 和 Swing 应用程序框架(JSR 296)在 Java 中开发一个小型应用程序。它应该在 Windows 和 Linux 下工作。

在 Windows XP 会话(窗口位置、大小等)被保存,但在 Linux 中却没有!程序扩展 SingleFrameApplication。它应该自动保存窗口位置。没有为此编写额外的代码。我跟踪了框架来源,但没有发现任何问题。会话存储必须将窗口状态保存到主文件夹中的 .MyApp 目录中。该文件不存在那里。我有一些用户参数,我使用 java 属性手动保存到 xml 中,而不是会话存储!该文件被保存到主文件夹中的 .MyApp 目录中,没有任何问题!

有谁知道为什么程序在 Linux 中不保存其状态,但在 Windows 中却保存?

已解决:原因是 OpenJDK 与 SAF 不兼容。在我从 Oracle windows 中删除 OpenJDK 并安装 JDK 之后,就变成了保存和恢复它们的位置和尺寸。

4

2 回答 2

1

首先,有一个围绕 Better Swing 应用程序框架的活跃社区。() 将您的问题发送到那里可能会有所帮助,或者甚至更好地在问题跟踪器中创建一个新的票证,其中包含您的环境的完整定义和代码的提取。

同时尝试将您的应用程序与 SUN/Oracle JRE/JDK 6 一起使用。因为 SAF 未在 Open JDK 上进行测试,并且它与 JDK7 有问题。(XMLEncoder/XMLDecoder 的不同实现)。

我希望它是有帮助的。

于 2011-03-25T19:07:31.677 回答
0

Linux 使用自己的 WindowManager,因此由操作系统决定窗口的位置。如果要覆盖它,则需要将窗口的大小和位置保存到一个Properties对象中,并在退出时将其放在某个位置,并在重新启动时再次加载。或者,您可以简单地调用setLocationRelativeTo(null)以始终使窗口居中在屏幕上。

如果您已经在使用属性,但它没有保存在您期望的位置,您可能需要调试它或检查您的环境变量。

于 2011-03-25T17:47:23.847 回答