1. ホーム
  2. multithreading

[解決済み】Not on FX application thread; currentThread = JavaFX Application Thread エラーを回避する方法は?

2022-02-05 04:50:45

質問

以下のコードスニペットがエラーを発生させています。 Not on FX application thread; currentThread = JavaFX Application Thread .このアプリケーションは、java1.7では正常に動作していましたが、fx8に移行したところ、エラーが発生するようになりました。 1回目の試行でアプリケーションを起動すると、意図したように動作します。

エラーも曖昧です Not On fx application thread and current thread- javafx application thread .現在のスレッドがfxアプリケーションスレッドである場合、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.setImplicitExit(false); は私の問題を解決してくれました。JavaFX 8で実装が変更されたようで、JavaFX 2で問題なく動作していた同じコードが fxアプリケーションのスレッドではありません というエラーが出てしまいます。