Минимизированная стадия javafx из другого потока - PullRequest
0 голосов
/ 01 марта 2019

У меня запущено 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();
            });

1 Ответ

0 голосов
/ 01 марта 2019

Вы пытались запустить его в потоке приложения JavaFX, используя:

Platform.runLater(() -> GraphicInterface.min(true));

Изменения в графическом интерфейсе должны быть сделаны только в потоке приложения JavaFX.

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