在使用之间保存 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
键/值对,具有 load
和 save
功能。不过,您需要能够解析与String
之间的值
Preferences API 比 Properties
高级一点,因为它允许您存储原语,但您无法控制这些值的存储位置(或多或少)。一个example
如果你真的很喜欢冒险,你可以使用XML api,甚至可以使用JAXB。
捕捉事件
主窗口实际上很简单。基本上,您只想将WindowListener
附加到主窗口并监视windowClosing
事件。在这一点上,您需要获得框架的边界并坚持您希望的任何方式。查看How to write window listeners
桌面根据您的需要提供了一些额外的机制。
您可以简单地将InternalFrameListener 添加到每个JInternalFrame
并监控internalFrameClosing
或internalFrameClosed
事件。
或者您可以实现自己的DesktopManager
并覆盖closeFrame
方法。如果可以的话,我可能会避免这种情况,因为 DesktopManager
对于每种外观和感觉都是不同的
【讨论】:
【参考方案2】:实现WindowListener
并在windowClosing()
调用中,将有关GUI 的信息保存到Properties 系统中,然后将store
保存到文件中。
在构建 GUI 时,读取属性文件(如果存在)并设置要为其维护属性的组件的属性。
确保为每个内部框架使用不同的名称,以免覆盖属性。
【讨论】:
【参考方案3】:不,没有可用于执行此操作的库,您必须手动编写所有代码。 如果您可以迁移到 JDesktop 等其他 GUI 框架,它具有内置功能,但与框架绑定。
【讨论】:
以上是关于在使用之间保存 Java GUI 布局配置(带桌面窗格)的主要内容,如果未能解决你的问题,请参考以下文章
Ubuntu 16.04桌面版GUI网络配置工具NetworkManager的命令行工具nm-tool无法使用的问题