Java Swing保存和加载工作区/设置

Java Swing保存和加载工作区/设置,java,swing,settings,preferences,workspace,Java,Swing,Settings,Preferences,Workspace,我有一个JavaSwing应用程序,它包含一组框架,这些框架主要包含显示大量数据的表。由于在启动时安排所有窗口和表总是一件麻烦且耗时的事情,因此我想实现“工作区”功能,以便用户可以保存首选项设置,并在启动时选择自动加载存储的工作区,以使所有窗口和表都显示为以前保存的状态。具体而言,我希望存储在工作区中的设置包括: 活动窗口(JFrame)及其在屏幕上的大小和位置 表设置,包括选定列、列顺序、列宽、排序、筛选 有没有人知道一种智能而简单的方法来实现这一点,而不需要一种显而易见的、看起来非常复杂

我有一个JavaSwing应用程序,它包含一组框架,这些框架主要包含显示大量数据的表。由于在启动时安排所有窗口和表总是一件麻烦且耗时的事情,因此我想实现“工作区”功能,以便用户可以保存首选项设置,并在启动时选择自动加载存储的工作区,以使所有窗口和表都显示为以前保存的状态。具体而言,我希望存储在工作区中的设置包括:

  • 活动窗口(JFrame)及其在屏幕上的大小和位置
  • 表设置,包括选定列、列顺序、列宽、排序、筛选

有没有人知道一种智能而简单的方法来实现这一点,而不需要一种显而易见的、看起来非常复杂而繁琐的解决方案,即迭代所有打开的窗口,并使用
首选项
api保存每一条信息?谢谢

在这种情况下,显而易见的解决方案可能是正确的
RCPrefs
这是一个简单的示例,演示了如何保存各种数据类型,包括
enum
。具体实现在很大程度上取决于应用程序。虽然单调乏味,但也不必特别复杂。为了方便起见,使用静态方法;框架和表首选项可能每个都是一个类。

总是“整个GUI”序列化,但我怀疑1)GUI 2中有不可序列化的部分。这将是一个麻烦的工作。我相信你对两个猜疑都是正确的。你可以考虑使用(更好)。Swing应用程序框架支持存储应用程序状态——除其他细节外——无痛苦(尽管切换到一个新框架可能太具侵入性:-)BSAF可能是一个不错的选择,如果我在开始时就这样做的话,但我怀疑现在按照您的建议切换会很痛苦。谢谢。这个例子很有用,我认为创建工作区类的想法很有意义。我创建了一个
WsFrame
类,其中包含位置和大小等常规设置。此对象可以包含一个或多个特定设置,如
WsTable
(用于表设置)。我选择不通过
首选项
存储此信息,并决定通过XStream简单地序列化
WsFrame
-对象列表,并将其存储为xml(因为我很懒,查看/编辑输出很方便)。实际上效果不错。谢谢,太好了。我可能会被宠坏,因为我的平台碰巧使用XML来实现
首选项
。如果你把这个作为对比答案,请告诉我;我想这会有用的。