我有几个关于Platform.runLater的问题.我有一个JavaFX应用程序类。在这个类中,我运行一个线程(该线程从网络套接字读取数据)。现在当我创建一个新的Stage在线程内,系统抛出一个execption(JavaFX事件调度线程和我的网络读取线程不一样)——我理解这种行为。但另一方面,我将网络阅读器中的文本附加到现有的TextArea或在ListView中添加/删除一些项目-这不会引发异常-为什么?我认为JavaFX是单线程的(ui库部分)。这与Swing中的一样吗:有时它可以工作,有时却只有垃圾(因为EDT)?我的问题:JavaFX事件调度程序线程何时抛出异常,何时不抛出
我基本上希望能够在我的LWJGL/GLFW线程启动后(和内部)启动一个新的Javafx窗口(阶段)。我基本上是这样做的:Threadthread=newThread(()->Platform.runLater(()->{Stagestage=newStage();//Stagesetupstage.show();}));thread.start();线程是我的游戏线程。但它从未运行过,我在Platform.runLater()中尝试了System.out.println()只是为了检查它是否从未运行过。为什么它永远不会运行,我该怎么做才能修复它?谢谢。编辑:只是为了澄清线程肯定已经开始
使用JavaFX8时,我们需要通过Platform.runLater运行与GUI的交互,否则如果从另一个线程运行它们将抛出异常。但是Platform.runLater的实现从不检查它当前是否在JavaFX线程上。我写了下面的方法:publicstaticvoidrunSafe(finalRunnablerunnable){Objects.requireNonNull(runnable,"runnable");if(Platform.isFxApplicationThread()){runnable.run();}else{Platform.runLater(runnable);}}这确
我一直在对此进行一些研究,但至少可以说我仍然很困惑。谁能给我一个具体的例子,说明何时使用Task以及何时使用Platform.runLater(Runnable);?究竟有什么区别?何时使用其中任何一个是否有黄金法则?如果我错了也请纠正我,但这两个“对象”不是在GUI的主线程内创建另一个线程的一种方式(用于更新GUI)吗? 最佳答案 Platform.runLater(...)用于快速简单的操作,Task用于复杂和大型操作。UsecaseforPlatform.runLater(...)UsecaseforTask:TaskExam