如何重新打开java应用程序launch4j单实例

时间:2012-09-28 19:49:08

标签: java single-instance launch4j

摘要:点击桌面图标,再次显示隐身应用。

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

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

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

编辑:

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

1 个答案:

答案 0 :(得分:3)

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

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