0

当我尝试从 Eclipse 作业中调用 javafx ui 时出现错误。所以我搜索了不同的博客。我得到了运行 javaui 我必须在 javafx 线程中运行。

void run{
    Platform.runLater(new Runnable() {
                @Override
                public void run() {

                    commanddialog = new CommandloggerDialog(window);
                    commanddialog.open();

                    // javaFX operations should go here

                }
            });
}

然后我得到了工具包未初始化的错误。然后我才知道我必须在这个线程之外为 javafx 创建工具包,所以我将方法修改为

 Shell shell = new Shell(window.getShell().getDisplay());

        shell.setLayout(new FillLayout());

        FXCanvas canvas = new FXCanvas(shell, SWT.None);
        Platform.runLater(new Runnable() {
            @Override
            public void run() {

                commanddialog = new CommandloggerDialog(window);
                commanddialog.open();

                // javaFX operations should go here

            }
        });

    }

这里 fxcanvas 是 javafxtoolkit。但是在添加所有这些之后,以前的错误又回来了。即不在 FX 应用程序线程上;

谁能告诉我我做错了什么?

4

1 回答 1

0

SWT 和 JavaFX 事件线程是相同的。因此,从外部线程调用 JavaFX UI 时,您始终可以使用 Display.asyncExec

于 2013-09-30T14:30:26.020 回答