我有两个线程,每个线程都有自己的功能:一个处理从套接字读取输入,另一个是与 GUI 相关的线程(使用 JavaFX)。读取线程包含对创建 GUI 线程的 Runnable 对象的引用。当读取线程接收到某个类型的对象时,它会从 GUI 线程调用一个方法。这个方法应该创建一个新的 Button 标记有一些通过套接字接收到的文本。但是,然后尝试实例化一个新的 Button,我收到以下异常:Exception in thread "Thread-4" java.lang.IllegalStateException: Not on FX application thread; currentThread = Thread-4.我提到当我尝试更新现有组件时一切正常,并且不再抛出此异常,因此我得出结论,对象创建是触发异常的原因。是否可以从不同的线程(如上所述)命令类的实例化?如果没有,是否有任何解决方法可以达到相同的结果?
1 回答
慕码人8056858
TA贡献1803条经验 获得超6个赞
这可能已经被问过一千次了,并且是 JavaFX 编程的一个基本方面。必须从应用程序线程向 GUI 添加(而不是创建)控件。因此,如果您想从某个其他线程启动它,您必须将您的呼叫包装到一个Platform.runLater()
呼叫中。
添加回答
举报
0/150
提交
取消