gpt4 book ai didi

尝试删除形状时出现 JavaFX 错误

转载 作者:行者123 更新时间:2023-12-02 05:23:54 25 4
gpt4 key购买 nike

如果矩形移动到屏幕的特定部分内部,我会尝试从窗口中删除该矩形。

这是我得到的错误:

Exception in thread "Thread-1539" java.lang.IllegalStateException: Not on FX application thread; currentThread = Thread-1539 at com.sun.javafx.tk.Toolkit.checkFxUserThread(Toolkit.java:238) at com.sun.javafx.tk.quantum.QuantumToolkit.checkFxUserThread(QuantumToolkit.java:400) at javafx.scene.Parent$1.onProposedChange(Parent.java:245) at com.sun.javafx.collections.VetoableObservableList.remove(VetoableObservableList.java:172) at com.sun.javafx.collections.ObservableListWrapper.remove(ObservableListWrapper.java:263) at com.sun.javafx.collections.VetoableObservableList.remove(VetoableObservableList.java:179) at MovementSample$HandListener.onFrame(MovementSample.java:136) at com.leapmotion.leap.LeapJNI.SwigDirector_Listener_onFrame(LeapJNI.java:495)

这是导致问题的代码片段:

if(areOverlapping(sauceRectangle, pizzaInside)) {
if(isHolding == null) {
Group g = (Group) scene.getRoot().getChildrenUnmodifiable().get(1);
g.getChildren().remove(sauceRectangle);
}
}

其中 areOverlapping() 只是一个检查某些逻辑的方法 - 问题不存在。

我的问题是:如果我有场景,如何从屏幕上删除矩形。另外,我的代码做错了什么?

最佳答案

错误说明了

IllegalStateException: Not on FX application thread

您正在尝试执行应在 JavaFX 应用程序线程上完成的操作,但您不在该线程上。

为了在 JavaFX 应用程序线程 上执行操作,请将它们用 Platform.runLater 包围起来。

Platform.runLater(new Runnable() {
@Override
public void run() {
//Code to be executed on JavaFX App Thread
}
});

有关Modifying UI components in JavaFX的更多信息

关于尝试删除形状时出现 JavaFX 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26243551/

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