在使用之间保存Java GUI布局配置(带桌面窗格)

时间:2013-08-09 21:20:54

标签: java swing layout user-interface save

我正在开发一个GUI,我想让它在会话之间保存它的布局信息。具体来说,如果用户运行gui,然后将gui移动到屏幕的不同部分,我希望gui在关闭之前保存该屏幕位置,以便下次打开时它将在新的屏幕位置打开。我想对宽度和高度做同样的事情(以保留用户对gui的重新调整大小)。

最后,我在GUI中使用桌面窗格有多个内部框架。我真的很想保留每个内部框架的布局(屏幕位置,高度和宽度,图标化(最小化)或不)。

我的问题是,在java中有一种简单的,内置的方法吗?或者我需要手动完成。我四处寻找,但在这个主题上找不到多少。

我正在使用Netbeans GUI编辑器开发GUI。谢谢!

3 个答案:

答案 0 :(得分:2)

您有多种选择。

存储

  1. Properties。这基本上是String键/值对,具有loadsave功能。您需要能够从String通过
  2. 解析值
  3. Preferences API比Properties更高级,因为它允许您存储基元,但是您无法控制这些值的存储位置(或多或少)。 example
  4. 如果您真的喜欢冒险,可以使用XML api,甚至JAXB
  5. 捕获事件

    主窗口实际上很简单。基本上你只想将WindowListener附加到主窗口并监视windowClosing事件。在这一点上,您需要获得框架的边界并坚持通过您想要的任何方式。查看How to write window listeners

    桌面根据您的需要提供了一些额外的机制。

    您只需向JInternalFrame添加InternalFrameListener即可监控internalFrameClosinginternalFrameClosed个事件。

    或者您可以实现自己的DesktopManager并覆盖closeFrame方法。如果可以的话,我可能会避免这种情况,因为DesktopManager对于每种外观都是不同的

答案 1 :(得分:1)

实施WindowListener并在windowClosing()调用中,将有关GUI的信息保存到Properties系统,然后store将它们保存到文件中。

构建GUI时,读取属性文件(如果存在)并设置要为其维护属性的组件的属性。

确保为每个内部框架使用不同的名称,这样就不会覆盖属性。

答案 2 :(得分:1)

不,没有可用的库,你必须手动编码。
如果你可以转移到其他GUI框架,如JDesktop,它有一个内置函数,但与框架绑定。