如何解决不在FX应用程序线程上; currentThread在javafx中使用swt?

时间:2013-09-30 13:51:57

标签: multithreading swt javafx-2 javafx

当我尝试从日食工作中调用javafx时,我收到错误。所以我搜索了不同的博客。我得到了运行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.But添加所有那些之前的错误后回来了。即不在外汇申请线上;

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

1 个答案:

答案 0 :(得分:0)

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