2010-04-14 51 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