2012-09-28 100 views
1

摘要:通過單擊桌面圖標使隱形應用程序再次可見。如何重新打開java應用程序launch4j單個實例

我創建了一個java桌面應用程序,並使用Launch4j創建可執行文件。我的應用程序需要作爲單個實例運行。我已經在Launch4j配置GUI中檢查了這個選項。當用戶單擊我的窗口上的x按鈕(我使用JFrame)時,窗口變得不可見。它不會被丟棄。當用戶雙擊系統托盤圖標時,應用程序窗口再次可見。當用戶雙擊應用程序桌面圖標並且應用程序已經運行時,我需要我的主窗口再次可見,就像系統托盤圖標的行爲一樣。

Launch4j爲單實例選項卡下的窗口標題提供了一個選項。我認爲這個選項可能是爲了我所需要的。但是,當我設置窗口標題並執行上述步驟時,我會看到一個空白的白色窗口。顯示空白的白色窗口時,雙擊我的系統托盤圖標將導致我的應用出現在白色窗口中。這種行爲表明,也許更改與頂層容器(Window,Frame,JFrame)有關的代碼可能會產生影響。

對於如何在仍然使用Launch4j的情況下整合這種行爲有什麼想法嗎? (很方便)。

編輯:

我的問題的核心是我如何定義會發生什麼,當用戶雙擊可執行我的桌面圖標?如果我可以檢查現有實例並將雙擊重定向到關聯的系統托盤圖標,那就太棒了。

回答

2

我能夠完成我的目標。在「單實例」選項卡中,我在「窗口標題」字段中給出了主JFrame的標題。然後我添加了一個WindowFocusListener到我的主JFrame。當我的JFrame獲得焦點時,我檢查它是否已經可見。如果不是,我會調用適當的方法來顯示我的JFrame。

關鍵的觀察是,雙擊由Launch4j生成的exe圖標會在設置中給出窗口標題時觸發窗口焦點事件。我不確定這是否是唯一被解僱的事件,但通過監聽該事件,當用戶雙擊桌面圖標時,我可以從我的java代碼中採取任何必要的操作。

相關問題