如果它被移动到屏幕的某个部分内,我正试图从窗口中删除一个矩形。
这是我得到的错误:
线程“Thread-1539”中的异常java.lang.IllegalStateException:不在FX应用程序线程上; currentThread = Thread-1539 at com.sun.javafx.tk.Toolkit.checkFxUserThread(Toolkit.java:238) at com.sun.javafx.tk.quantum.QuantumToolkit.checkFxUserThread(QuantumToolkit.java:400) 在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) 在MovementSample $ HandListener.onFrame(MovementSample.java:136) 在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()只是一种检查某些逻辑的方法 - 问题不存在。
我的问题是:如果我有场景,如何从屏幕上删除矩形。另外,我在代码中做错了什么?
答案 0 :(得分:2)
错误说明了
IllegalStateException:不在FX应用程序线程
您正在尝试执行应该在JavaFX Application线程上执行的操作,而您不在其中。
要在JavaFX Application thread
上执行操作,请使用Platform.runLater
Platform.runLater(new Runnable() {
@Override
public void run() {
//Code to be executed on JavaFX App Thread
}
});
的更多信息