2

摘要:通过单击桌面图标使不可见的应用程序再次可见。

我创建了一个 java 桌面应用程序并使用 Launch4j 创建可执行文件。我的应用程序需要作为单个实例运行。我已经在 Launch4j 配置 GUI 中检查该选项实现了这一点。当用户单击我的窗口上的 x 按钮(我正在使用 JFrame)时,窗口将变为不可见。它没有被处置。当用户双击系统托盘图标时,应用程序窗口再次可见。当用户双击应用程序桌面图标并且应用程序已经在运行时,我需要我的主窗口再次可见,就像系统托盘图标的行为一样。

Launch4j 在 Single instance 选项卡下提供了一个窗口标题选项。我认为这个选项可能是为了满足我的需要。但是,当我设置窗口标题并执行上述步骤时,我得到一个空白的白色窗口。在显示空白窗口的情况下,双击我的系统托盘图标将使我的应用程序出现在白色窗口中。这种行为表明,更改与顶级容器(Window、Frame、JFrame)相关的代码可能会产生影响。

您对如何在仍使用 Launch4j 的同时合并此行为有任何想法吗?(很方便)。

编辑:

我的问题的核心是如何定义当用户双击我的可执行桌面图标时会发生什么?如果我可以检查现有实例并将双击重定向到相关的系统托盘图标,那就太棒了。

4

1 回答 1

3

我能够实现我的目标。在 Single Instance 选项卡中,我在“Window title”字段中给出了主 JFrame 的标题。然后我在我的主 JFrame 中添加了一个 WindowFocusListener。当我的 JFrame 获得焦点时,我会检查它是否已经可见。如果不是,我调用适当的方法来显示我的 JFrame。

关键观察是,当在设置中给出窗口标题时,双击 Launch4j 生成的 exe 图标会触发窗口焦点事件。我不确定这是否是唯一被触发的事件,但是通过监听该事件,当用户双击桌面图标时,我可以从我的 java 代码中采取任何必要的操作。

于 2012-10-01T18:11:14.997 回答