2010-04-14 38 views
0

我已經創建了一個使用java swing的登錄頁面。我爲應用程序創建了jar。現在,當我運行jar然後我的登錄頁面顯示,然後我最小化應用程序,並再次運行jar然後顯示我的應用程序的另一個實例(意味着現在在我的系統中我有兩個登錄頁面1是最小化的格式,另一個是在正常狀態如何最大化java swing應用程序

但我希望,如果在我的系統登錄頁面已經運行,並最小化,那麼如果我再次運行該jar那麼它將不會作爲一個新的應用程序啓動,而應該最大化早期的登錄頁面。

如何實現這種類型的功能?

請幫我

感謝 蘇尼爾·庫馬爾Sahoo

+2

據我瞭解,你想要一個單一的實例應用程序:http://stackoverflow.com/questions/177189/how-to-implement-a-single-instance-java-application – 2010-04-14 14:14:12

回答

0

如果你只想有一個應用程序的一個實例,如果你得到一個失敗,則應用已經運行,所以出口開闢一些不尋常的端口的服務器套接字。

至於你確切的問題,這是不可能的Swing應用程序瞭解而另一個沒有做一些特定的代碼運行。

我想你可以使用實際運行監聽程序的服務器端口,並執行一些命令。然後,客戶端應用程序可以檢測服務器端口是否不可用,然後打開客戶端並向端口發送命令。

0

對於Web應用程序啓動,這很容易。您可以使用SingleInstanceService和SingleInstanceListener類。當新實例運行時,您只需關閉先前的實例。

以前的實例應該通過實施NewActivation接收來自新的一些消息()。之前的實例應該收到關閉消息並作出相應的響應。

關閉前一個實例的好處是,它可能已經墜毀,並帶來了新的實例的前景是自動的。

+0

我無法殺死先前的實例 – 2010-04-14 14:51:24

+0

在通知原始實例它應該「最大化」之後,殺死新實例可能會更好。它可以像寫入第一個實例已打開的套接字一樣簡單。 – 2010-04-14 14:55:07

+0

@Sunil,我提供了更多的細節。 @Jason,我更新了我的答案,以反映關閉先前實例的好處。我喜歡你的建議,但我從來沒有實現它,所以我不知道你如何「最大化」應用程序的細節。我用另一種方式實現了它。 – 2010-04-14 16:09:57