【发布时间】:2015-05-31 21:47:57
【问题描述】:
我基本上希望能够在我的 LWJGL/GLFW 线程启动之后(和内部)启动一个新的 Javafx 窗口(阶段)。我基本上是在做:
Thread thread = new Thread(()->Platform.runLater(()->{
Stage stage = new Stage();
//Stage setup
stage.show();
}));
thread.start();
线程是我的游戏线程。
但它永远不会运行,我在Platform.runLater() 中尝试了一个System.out.println(),只是为了检查它永远不会运行。
为什么它永远不会运行,我该怎么做才能修复它?谢谢。
编辑:只是为了澄清线程肯定已经开始等等,如果我这样做:
Thread thread = new Thread(()->{
System.out.println("Before Platform.runLater()");
Platform.runLater(()->System.out.println("Inside Platform.runLater()"));
System.out.println("After Platform.runLater()");
});
它输出:
Before Platform.runLater()
After Platform.runLater()
【问题讨论】:
-
您提供的那段代码似乎没有问题。你能检查一下
thread.start();是否被调用并且线程正在启动。 -
使用您发布的代码,
Thread是多余的。您可以简单地从您所在的任何线程调用Platform.runLater(...)。这里的上下文是什么? FX 工具包和应用线程启动了吗? -
是的,对不起,我已经大大简化了它,因为线程中的不同类中还有很多其他的东西。我绝对知道线程已启动,因为我的 GLFW 窗口来自哪里,我可以看到这一点。基本上我有我的 GLFW 窗口/游戏,我希望在一个条件之后也出现一个阶段(所以 GLFW 窗口必须先出现)。 FX 应用程序线程已启动,因为我使用 FX 应用程序启动 GLFW 窗口。
标签: java multithreading javafx lwjgl