Вывести работающее приложение на передний план при открытии другого экземпляра - PullRequest
2 голосов
/ 09 декабря 2011

Я сделал свое Java-приложение как приложение с одним экземпляром. Я реализовал систему блокировки файлов для того же.

Если приложение уже запущено, я хочу показать запущенное приложение на переднем плане. Как мне этого добиться? Как я могу изменить запущенный процесс этого приложения и показать его?

Ответы [ 2 ]

1 голос
/ 09 декабря 2011

JWS не только предоставляет x-plat SingleInstanceService, но также (из памяти) выводит приложение toFront() на newActivation(String[]). Конечно, если это не автоматически, вы можете вызвать это явно.

Вот демоверсия . СИС .

1 голос
/ 09 декабря 2011

То, что вы запрашиваете, зависит от ОС, но вы всегда можете иметь собственную реализацию для этого. Ваше приложение может прослушивать определенный порт для команды 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();
                }
            });

}
...