【问题标题】:Bring a running application to front when other instance is opened打开其他实例时将正在运行的应用程序置于最前面
【发布时间】:2011-12-09 13:19:57
【问题描述】:

我已将我的 java 应用程序作为单实例应用程序。我已经实现了文件锁定系统。

如果应用程序已经在运行,我想将正在运行的应用程序显示在前面。我该如何做到这一点?如何访问该应用程序的运行进程并显示它?

【问题讨论】:

标签: java desktop-application


【解决方案1】:

您要求的是依赖于操作系统的,但您始终可以拥有自己的实现来执行此操作。您的应用程序可以在特定端口上侦听 bring-to-front 命令,您可以从应用程序的第二个实例发送该命令。

void main(String[] args){
   if(applicationAlreadyRunning){
     // Send bring-to-front message to running instance on a known port
     // and exit.
   }
}

当你收到一个提上日程的消息时,你可以这样做:

public void BringToFrontCommandReceived(){
    java.awt.EventQueue.invokeLater(new Runnable() {
                @Override
                public void run() {
                    myMainFrame.toFront();
                    myMainFrame.repaint();
                }
            });

}

【讨论】:

  • "listen on a certain port" 当然,如果将套接字用于 'to front',您也可以删除整个文件锁定并简单地检查该端口上的侦听器端口作为“我已经跑了吗?”检查。
【解决方案2】:

JWS 不仅提供了一个 x-plat SingleInstanceService,而且还(从内存中)在newActivation(String[]) 上弹出应用程序toFront()。当然如果它不是自动的,你可以显式调用它。

这是demo. of the SIS

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-27
    • 2011-11-13
    • 2011-12-13
    • 1970-01-01
    • 2015-05-03
    • 1970-01-01
    • 1970-01-01
    • 2023-01-28
    相关资源
    最近更新 更多