У меня запущено 2 потока: один слушает на сокете в ожидании команд и другой запускает приложение javafx
public class GraphicInterface extends Application implements Runnable {
private static Stage primaryStage;
public static void min(boolean bool) {
getPrimaryStage().setIconified(bool);
}
@Override
public void start(Stage stage) {
GraphicInterface.setPrimaryStage(stage);
Platform.setImplicitExit(false);
this.primaryStage = stage;
sceneParent = FXMLLoader.load(getClass().getResource("...url..."));
Scene scene = new Scene(sceneParent);
primaryStage.setScene(scene);
getPrimaryStage().sizeToScene();
getPrimaryStage().show();
}
@Override
public void run() {
launch();
}
public static Stage getPrimaryStage() {
return primaryStage;
}
public static void setPrimaryStage(Stage primaryStage) {
GraphicInterface.primaryStage = primaryStage;
}
}
Проблема в том, что из другого потока я хочу минимизировать вызов приложения
GraphicInterface.min(true);
Я получаю сообщение об ошибке
Exception in thread "OTHER THREAD" java.lang.IllegalStateException: This operation is permitted on the event thread only; currentThread = OTHER THREAD
Как мне этого добиться?
ОБНОВЛЕНИЕ:
Решите это вместо того, чтобы поставить GraphicInterface.min(true)
в другой ветке пишем
Platform.runLater(() -> {
GraphicInterface.min();
});