0

我最近开始使用 Java 进行开发,并且非常享受这种体验。默认的 Java 包加载了有用的东西,拥有 Swing 包对创建 GUI 有很大帮助。我决定为我的 LayoutManager 使用 SpringLayout,因为它简单且非常灵活,但现在我发现自己陷入了困境。

我希望能够保持我的应用程序的状态。我开始使用 Preferences API 来解决这个问题,但这只允许存储 Java 原生(可以理解 - 它的目标是轻量级)。我继续通过持久化包含数据的 XML 字符串来混杂 Preferences 的使用。过了一会儿,我决定环顾四周,看看是否有更好的地方,然后我开始阅读有关可序列化的内容——看起来我找到了答案。

然而,当我尝试序列化一个具有一些由 SpringLayout 管理的 GUI 组件的类时,我遇到了一个障碍,我发现它没有实现可序列化。我以为我已经找到了解决transient关键字问题的方法,但 SpringLayout 唯一允许的修饰符是final. 我见过的唯一解决方法是更改​​我正在使用的 LayoutManager ......我不想这样做,因为我已经创建了一些相当定制的 GUI。

有任何想法吗?

在此先感谢您的所有回复。

-M

4

2 回答 2

1

你是什​​么意思

SpringLayout 唯一允许的修饰符是final.

如果它是您的可序列化对象的一个​​字段,那么您可以将其声明为瞬态的。如果您无法控制 Object 中的所有字段,请尝试仅持久State化您写入所有相关数据的 Object。保留一个布局管理器不是一个好主意。

于 2012-08-07T20:30:54.243 回答
0

我试图将构造函数本地的 SpringLayout 实例声明为transient. 需要做的是将这些变量声明为类变量,然后将它们修改为transient.

于 2012-08-09T15:33:37.710 回答