重新加载站点后的JavaFX Platform.runLater()

重新加载站点后的JavaFX Platform.runLater(),java,swing,applet,javafx,Java,Swing,Applet,Javafx,我正在使用嵌入在Swing中的JavaFX编写一个Java小程序。用户可以使用JFXPanel和以下代码启动带有JavaFX组件的Swing GUI: group = AccessController.doPrivileged(new ProxyNewGroup()); fxPanel = new JFXPanel(); Platform.runLater(new Runnable() { public void run() { /* Create some object

我正在使用嵌入在Swing中的JavaFX编写一个Java小程序。用户可以使用JFXPanel和以下代码启动带有JavaFX组件的Swing GUI:

group = AccessController.doPrivileged(new ProxyNewGroup());
fxPanel = new JFXPanel();
Platform.runLater(new Runnable() {
    public void run() {
        /* Create some objects and add them to group */
        ...
        Scene scene = new Scene(group);
        fxPanel.setScene(scene);
    }
};
jFrame.add(fxPanel);
当小程序首先启动时,用户可以创建GUI元素并关闭它。以后他可以再创作。要做到这一点,我需要在内存中保存一个不可见的JFrame,其中包含一个JFXPanel,这是我从未使用过的,因为我在某个地方读到,否则JavaFX应用程序线程将停止。现在的问题是,当用户重新加载页面时,run方法不会被执行,我也不会收到任何错误消息或异常

我编写了一个自己的类,用自定义构造函数实现runnable。构造函数被调用并一直运行到最后,但run方法无法启动。我还尝试在AccessController中完成所有工作,但这也不起作用

我真的不知道如何解决这个问题,并感谢任何帮助。提前谢谢

更新

我尝试了更多的东西:

我检查了运行的线程。启动Applet GUI时,有一个JavaFX应用程序线程和一个QuantumRenderer线程。当我重新加载网页时,线程将不再显示。当我在打开GUI并创建线程之前重新加载网页时,一切都正常,但在第二次重新加载后失败

我尝试使用Platform.setImplicitExitfalse。使用此选项,我不再需要背景对象。重新加载网页时,我得到一个未捕获的QuantumRenderer-0:java.lang.IllegalMonitorStateException,java控制台关闭。启动小程序时,我的计算机上的一切都正常,但我不想让Java崩溃,而且这种方法在使用相同Java版本8的不同pc上也不起作用


也许这些信息很有用。

不确定你是否解决了这个问题,但也许这可以帮助你

runLater接受已执行操作可能引发的任何异常, 因为它的设计目的不是向调用者传达任何信息。如果 如果需要错误处理,则需要专门化runAndWait以等待 提供这种通信的可运行子类