1

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

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

我的问题是,是否有一种简单的内置方法可以在 Java 中做到这一点?还是我需要手动完成。我四处搜索,但在这个主题上找不到太多。

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

4

3 回答 3

2

您有任意数量的选项。

贮存

  1. 属性。这基本上是一个具有功能的String键/值对。您将需要能够解析往返的值loadsaveString
  2. Preferences API 稍微高级一点Properties,因为它允许您存储原语,但您无法控制这些值的存储位置(或多或少)。一个例子
  3. 如果您真的很喜欢冒险,您可以使用XML api,甚至可以使用JAXB

捕捉事件

主窗口实际上很简单。基本上,您只想将 a 附加WindowListener到主窗口并监视windowClosing事件。在这一点上,您需要获得框架的边界并坚持您希望的任何方式。查看如何编写窗口侦听器

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

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

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

于 2013-08-09T21:45:59.017 回答
1

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

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

确保为每个内部框架使用不同的名称,以免覆盖属性。

于 2013-08-09T21:24:47.557 回答
1

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

于 2013-08-09T21:36:29.397 回答