gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 14:56:51 26 4
gpt4 key购买 nike

我正在使用 Swing 中嵌入的 JavaFX 编写 Java Applet。用户可以使用 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);

当 Applet 首次启动时,用户可以创建 GUI 元素并将其关闭。稍后他可以重新创作。为此,我需要在内存中保存一个不可见的 JFrame,其中包含整个运行时的 JFXPanel,但我从未使用过它,因为我在某处读到,否则 JavaFX-Application-Thread 将停止。现在的问题是,当用户重新加载页面时,运行方法将不会被执行,并且我没有收到任何错误消息或异常。

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

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

更新

我尝试了更多的事情:

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

  2. 我尝试使用Platform.setImplicitExit(false)。有了这个选项,我就不再需要我的背景对象了。重新加载网页时,我收到 QuantumRenderer-0 uncaught: java.lang.IllegalMonitorStateException 并且 Java 控制台关闭。启动 Applet 时,我的计算机上一切正常,但我不想使 Java 崩溃,并且此方法在具有相同 Java 版本 (8) 的不同计算机上不起作用。

也许这些信息有帮助。

最佳答案

不确定你是否解决了这个问题,但也许是这个 http://news.kynosarges.org/2014/05/01/simulating-platform-runandwait/可以帮助你

runLater swallows any exceptions that the executed action might throw, as it’s not designed to communicate anything back to the caller. If you want error handling you need to specialize runAndWait for a Runnable subclass that provides such communication

关于站点重新加载后的 JavaFX Platform.runLater(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23109575/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com