【问题标题】:JavaFX FXCanvas on Eclipse SWT Editor throws java.lang.IllegalStateExceptionEclipse SWT 编辑器上的 JavaFX FXCanvas 抛出 java.lang.IllegalStateException
【发布时间】:2017-09-07 21:52:35
【问题描述】:

用例:使用 FxCanvas 在 Eclipse 编辑器的 createPartControl() 中显示 JavaFx 条形图。

问题:首次启动 RCP 应用程序时,swtFxBarChart() 成功地在 SWT Composite 上绘制图形。但是,当我们关闭编辑器窗口并重新打开 fxCanvas.setScene(scene); 抛出 java.lang.IllegalStateException:不在 FX 应用程序线程上; currentThread = JavaFX 应用程序线程

代码:

private void swtFxBarChart(Composite composite) {
        final FXCanvas fxCanvas = new FXCanvas(composite, SWT.NONE);
        fxCanvas.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).align(SWT.FILL, SWT.FILL).create());
        fxCanvas.setLayout(GridLayoutFactory.fillDefaults().create());

        final CategoryAxis xAxis = new CategoryAxis();
        final NumberAxis yAxis = new NumberAxis();
        final BarChart<String, Number> bc = new BarChart<String, Number>(xAxis, yAxis);
        bc.setTitle("Example");
        xAxis.setLabel("Status");
        yAxis.setLabel("Count");
        bc.setLegendVisible(false);

        XYChart.Series series1 = new XYChart.Series();
        final XYChart.Data completedSeries = new XYChart.Data("Completed", completedList().size());
        series1.getData().add(completedSeries);
        final XYChart.Data failedSeries = new XYChart.Data("Failed", failedList().size());
        series1.getData().add(failedSeries);    
        Scene scene = new Scene(bc, 400, 400);
        bc.getData().addAll(series1);
        fxCanvas.setScene(scene);
    }

环境:jdk1.8.0_102

【问题讨论】:

    标签: eclipse javafx eclipse-plugin swt eclipse-rcp


    【解决方案1】:

    调试问题后,我发现JavaFx应用程序会在编辑器第一次关闭时自行处理,因此抛出以下异常

    java.lang.IllegalStateException:不在 FX 应用程序线程上; currentThread = JavaFX 应用程序线程 解决了编辑器重新打开时的 IllegalStateException

    解决方案:-

    在创建 FxCanvas 之前添加以下代码行

    Platform.setImplicitExit(false);
    

    将 ImplicitExit 设置为 false 可确保即使在最后一个窗口关闭后应用程序仍将继续正常运行,直到应用程序调用 exit。默认值是true。

    这解决了我的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-03
      • 2018-08-02
      • 1970-01-01
      • 2021-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多