Как запускать приложения с java и держать запущенное приложение поверх текущего приложения - PullRequest
2 голосов
/ 05 августа 2020

У меня есть приложение javaFX, которое по сути является порталом. Он содержит кнопки, которые можно использовать для запуска различных других приложений.

Упрощенная тестируемая версия:

public class PortalApplication extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        FlowPane root = new FlowPane();
        primaryStage.setScene(new Scene(root));
        primaryStage.setMaximized(true);
        primaryStage.show();

        root.getChildren().add(createButton("Launch 'Notepad'", "notepad"));
        root.getChildren().add(createButton("Launch 'My App'", "java -jar app1.jar"));
        //..

    }

    private Button createButton(String title, String command) {
        Button button = new Button(title);
        button.setOnAction(event -> {
            button.setDisable(true);
            new Thread(() -> {
                try {
                    Thread.sleep(1000); //simulated delay
                    Runtime.getRuntime().exec(command);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }).start();
        });
        return button;
    }
}

Проблема : Иногда пользователи запускают приложение, а затем щелкните еще раз на портале, пока приложение загружается или работает, в результате чего новое запущенное приложение теряет фокус и go находится за приложением портала. Большинство пользователей этого не понимают и думают, что запущенное приложение не запускалось.

Как мне запустить приложения, чтобы они всегда оставались поверх моего приложения портала?

Я думаю, что Решением было бы то, что каждый раз, когда приложение портала фокусируется, я мог бы программно передавать фокус запущенному приложению, если оно существует, но мне не удалось найти способ сделать это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...