Java Swing:保存和加载组件

Java Swing:保存和加载组件,java,swing,serialization,deserialization,Java,Swing,Serialization,Deserialization,我试图保存并加载一个JPanel的状态,它有嵌套的自定义面板(其他类的实例)和各种侦听器。 这些组件是由Matisse创建的,因此它们具有专用子组件 我尝试了xmlcodecoder/xmlcodecoder,但它在序列化尝试中引发了各种异常 使用XStream,我可以保存并加载GUI状态;但是,它不会重新加载侦听器,使我只能使用只读组件,这是不可取的 因此,这为我打开了一小堆问题: XStream序列化是否有问题 子组件的访问修饰符是否与这两个库中的任何库相关 对于Swing组件序列化,还有

我试图保存并加载一个
JPanel
的状态,它有嵌套的自定义面板(其他类的实例)和各种侦听器。 这些组件是由Matisse创建的,因此它们具有专用子组件

我尝试了
xmlcodecoder
/
xmlcodecoder
,但它在序列化尝试中引发了各种异常

使用
XStream
,我可以保存并加载GUI状态;但是,它不会重新加载侦听器,使我只能使用只读组件,这是不可取的

因此,这为我打开了一小堆问题:

  • XStream
    序列化是否有问题
  • 子组件的访问修饰符是否与这两个库中的任何库相关
  • 对于Swing组件序列化,还有其他值得探索的选项吗
  • 我应该坚持只序列化组件逻辑吗

组件序列化非常非常困难。相反,您应该重点存储UI使用的值的状态。因此,与其尝试存储UI组件的物理状态,不如存储支持它的数据。通过这种方式,您继续以每次相同的方式初始化UI组件,但随后根据加载的内容重新应用数据。Jaxb可能值得探索“.哪有嵌套的自定义JPanel”为什么是“自定义”?“。和各种侦听器。这些组件是由马蒂斯创建的…”哦,对了。。。IDE正在编写代码。那不是好兆头。。正如@MadProgrammer所述,序列化组件中的模型/数据才有意义。