gpt4 book ai didi

java - 来自另一个线程的最小化 javafx 阶段

转载 作者:行者123 更新时间:2023-12-02 01:37:55 30 4
gpt4 key购买 nike

我有 2 个线程正在运行,一个正在监听 soket 等待命令,另一个启动 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();
});

最佳答案

您是否尝试过使用以下方法在 JavaFX 应用程序线程中运行它:

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

GUI 中的更改只能在 JavaFX 应用程序线程中进行。

关于java - 来自另一个线程的最小化 javafx 阶段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54945652/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com