multithreading - 如何避免不在 FX 应用程序线程上; currentThread = JavaFX 应用程序线程错误?

标签 multithreading javafx javafx-8 javafx-2

下面的代码片段给了我错误 不在 FX 应用程序线程上; currentThread=JavaFX 应用程序线程。该应用程序在 java 1.7 中运行良好,但当我将其移至 fx8 时,它现在出现错误。当我第一次尝试启动应用程序时,它按预期工作。但是在关闭舞台并再次打开它后,它无法工作。

该错误也是不明确的Not On fx application thread and current thread-javafx application thread。如果当前线程是,那么not on fx application thread是什么意思FX 应用程序线程。

progressDialog = createProgressDialog(service);
progressDialog.show();
progressDialog.setOnCloseRequest(new EventHandler<WindowEvent>() {
    @Override
    public void handle(WindowEvent event) {
        // if (service.isRunning()) {
        // service.cancel();
        progressDialog.close();
        // }
    }
});
@SuppressWarnings("unchecked")
private Stage createProgressDialog(final Service<IStatus> service) {
    stage = new Stage();

    URL url = FileLocator.find(Activator.getDefault().getBundle(),
    new Path("icons/xxx_16x16.png"), null); //$NON-NLS-1$
    stage.getIcons().add(new Image(url.getFile()));
    stage.setTitle("Downloading ..."); //$NON-NLS-1$
    // Creating StackPane
    stage.initModality(Modality.WINDOW_MODAL);
}

最佳答案

调用

Platform.runLater(new Runnable() {
    @Override
    public void run() {
        // do your GUI stuff here
    }
});

会修复它。

关于multithreading - 如何避免不在 FX 应用程序线程上; currentThread = JavaFX 应用程序线程错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56735281/

相关文章:

JavaFX 表/树表单元格溢出

java - JavaFx 中 3d 框的定位

python确定导入模块的名称

multithreading - MPI_Bcast 在 MPI 中使用线程 (OpenMP)

JavaFX - FlowPane 自动调整大小

java - 如何在 netbeans 中的 java fxml 应用程序中编译时删除警告

java - 为什么主类中的 LauncherImpl.launchApplication() (javaFX 启动器)正在启动 InvocabularyTargetException 而不是调用 launch() ?

python - 如何将两个参数传递给 Pool.starmap()?

multithreading - Flask 与 PyQt5 - Flask 控制程序流程?

javafx - 在JavaFX8中隐藏TextField的输入插入符