【发布时间】:2011-12-09 13:19:57
【问题描述】:
我已将我的 java 应用程序作为单实例应用程序。我已经实现了文件锁定系统。
如果应用程序已经在运行,我想将正在运行的应用程序显示在前面。我该如何做到这一点?如何访问该应用程序的运行进程并显示它?
【问题讨论】:
我已将我的 java 应用程序作为单实例应用程序。我已经实现了文件锁定系统。
如果应用程序已经在运行,我想将正在运行的应用程序显示在前面。我该如何做到这一点?如何访问该应用程序的运行进程并显示它?
【问题讨论】:
您要求的是依赖于操作系统的,但您始终可以拥有自己的实现来执行此操作。您的应用程序可以在特定端口上侦听 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();
}
});
}
【讨论】:
JWS 不仅提供了一个 x-plat SingleInstanceService,而且还(从内存中)在newActivation(String[]) 上弹出应用程序toFront()。当然如果它不是自动的,你可以显式调用它。
【讨论】: