java.lang.IllegalStateException: Not on FX application thread

本文讨论了在JavaFX应用中遇到'Not on FX application thread'异常的原因和解决方案。当尝试在非FX线程中更新界面组件时,会抛出此异常。解决方法是使用`Platform.runLater()`方法确保所有界面更新操作都在FX应用线程中执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 问题描述

运行javaFX程序,系统会自动创建一个FX application thread线程,用于更新界面的组件信息,例如ListViewitemsLabeltext。当我们想运用多线程实现业务,而自己创建的线程又直接导致了界面组件信息的更新时,控制台就会抛出java.lang.IllegalStateException异常。

完整异常栈如下
Exception in thread “pool-2-thread-1” java.lang.IllegalStateException: Not on FX application thread; currentThread = pool-2-thread-1
at com.sun.javafx.tk.Toolkit.checkFxUserThread(Toolkit.java:279)
at com.sun.javafx.tk.quantum.QuantumToolkit.checkFxUserThread(QuantumToolkit.java:423)
at javafx.scene.Parent2.onProposedChange(Parent.java:367)atcom.sun.javafx.collections.VetoableListDecorator.setAll(VetoableListDecorator.java:113)atcom.sun.javafx.collections.VetoableListDecorator.setAll(VetoableListDecorator.java:108)atcom.sun.javafx.scene.control.skin.LabeledSkinBase.updateChildren(LabeledSkinBase.java:575)atcom.sun.javafx.scene.control.skin.LabeledSkinBase.handleControlPropertyChanged(LabeledSkinBase.java:204)atcom.sun.javafx.scene.control.skin.LabelSkin.handleControlPropertyChanged(LabelSkin.java:49)atcom.sun.javafx.scene.control.skin.BehaviorSkinBase.lambda2.onProposedChange(Parent.java:367) at com.sun.javafx.collections.VetoableListDecorator.setAll(VetoableListDecorator.java:113) at com.sun.javafx.collections.VetoableListDecorator.setAll(VetoableListDecorator.java:108) at com.sun.javafx.scene.control.skin.LabeledSkinBase.updateChildren(LabeledSkinBase.java:575) at com.sun.javafx.scene.control.skin.LabeledSkinBase.handleControlPropertyChanged(LabeledSkinBase.java:204) at com.sun.javafx.scene.control.skin.LabelSkin.handleControlPropertyChanged(LabelSkin.java:49) at com.sun.javafx.scene.control.skin.BehaviorSkinBase.lambda2.onProposedChange(Parent.java:367)atcom.sun.javafx.collections.VetoableListDecorator.setAll(VetoableListDecorator.java:113)atcom.sun.javafx.collections.Vetoa

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值