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



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

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

我的问题是,在java中有没有一种简单的内置方法可以做到这一点?或者我需要手动操作。我到处找了找,但找不到太多关于这个话题的内容。

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

您有任意数量的选项。

存储

  1. 属性。这基本上是具有loadsave功能的String密钥/值对。不过,您需要能够解析往返于String的值
  2. 首选项API比Properties高级一点,因为它允许您存储基元,但您失去了对这些值存储位置的控制(或多或少)。一个例子
  3. 如果你真的很有冒险精神,你可以使用XMLapi,甚至JAXB

捕捉事件

主窗口实际上很容易。基本上,您只想将WindowListener附加到主窗口并监视windowClosing事件。在这一点上,你需要获得框架的边界并坚持到底,这意味着你愿意。查看如何编写窗口侦听器

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

您可以简单地将InternalFrameListener添加到每个JInternalFrame并监视internalFrameClosinginternalFrameClosed事件。

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

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

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

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

不,没有可用的库,您必须手动编写所有代码
如果您可以移动到其他GUI框架,如JDesktop,它有一个内置的功能,但与框架绑定在一起。

最新更新