У меня есть приложение 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 находится за приложением портала. Большинство пользователей этого не понимают и думают, что запущенное приложение не запускалось.
Как мне запустить приложения, чтобы они всегда оставались поверх моего приложения портала?
Я думаю, что Решением было бы то, что каждый раз, когда приложение портала фокусируется, я мог бы программно передавать фокус запущенному приложению, если оно существует, но мне не удалось найти способ сделать это