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

Posted

技术标签:

【中文标题】在使用之间保存 Java GUI 布局配置(带桌面窗格)【英文标题】:Save Java GUI layout configuration (w/ a Desktop Pane) between uses 【发布时间】:2013-08-09 21:20:54 【问题描述】:

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

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

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

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

【问题讨论】:

【参考方案1】:

您有多种选择。

存储

    Properties。这基本上是一个 String 键/值对,具有 loadsave 功能。不过,您需要能够解析与String 之间的值 Preferences API 比 Properties 高级一点,因为它允许您存储原语,但您无法控制这些值的存储位置(或多或少)。一个example 如果你真的很喜欢冒险,你可以使用XML api,甚至可以使用JAXB。

捕捉事件

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

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

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

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

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于在使用之间保存 Java GUI 布局配置(带桌面窗格)的主要内容,如果未能解决你的问题,请参考以下文章

matlab gui图像带legend保存

9GUI

Ubuntu 16.04桌面版GUI网络配置工具NetworkManager的命令行工具nm-tool无法使用的问题

使用 java 框架实现 GUI 桌面应用程序的自动化 [关闭]

Java桌面应用程序设计:SWT简介

在 java 中转换 MFC 桌面应用程序 GUI