使用SpringLayout(Java)序列化一个类

时间:2012-08-07 20:07:15

标签: java serializable springlayout

我最近开始使用Java开发并且非常享受这些体验。默认的Java包加载了有用的东西,并且使用Swing包对创建GUI有很大的帮助。我决定将SpringLayout用于我的LayoutManager,因为它简单且非常灵活,但现在我发现自己处于泡菜中。

我希望能够坚持我的申请状态。我开始使用Preferences API来解决这个问题,但这只允许存储Java native(可以理解 - 它的目标是轻量级)。我继续通过持久化包含数据的XML字符串来混淆使用Preferences。过了一会儿,我决定环顾四周,看看有没有更好的东西,然后我开始阅读可序列化 - 看起来我找到了答案。

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

有什么想法吗?

提前感谢任何和所有回复。

-M

2 个答案:

答案 0 :(得分:1)

你是什么意思

  

SpringLayout唯一允许的修饰符是final

如果它是Serializable对象的字段,那么您可以将其声明为瞬态。如果您无法控制对象中的所有字段,请尝试仅保留State对象,在该对象中写入所有相关数据。坚持布局经理并不是一个好主意。

答案 1 :(得分:0)

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