2012-09-28 56 views
1

摘要:通过单击桌面图标使隐形应用程序再次可见。如何重新打开java应用程序launch4j单个实例

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

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

对于如何在仍然使用Launch4j的情况下整合这种行为有什么想法吗? (很方便)。

编辑:

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

回答

2

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

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

相关问题