2014-10-07 8 views
0

화면의 특정 부분 안에 위치하도록 이동하는 경우 내 창에서 사각형을 제거하려고합니다. 스레드 "스레드-1539"java.lang.IllegalStateException에서모양을 제거하려고 할 때 JavaFX 오류가 발생합니다.

예외 :

은 내가 가진 오류가 발생하지 FX 응용 프로그램 스레드에서; currentThread = Thread-1539 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) com.sun.javafx.collections.VetoableObservableList.remove (VetoableObservableList.java:172) at com.sun.javafx.collections.ObservableListWrapper.remove (ObservableListWrapper. 자바 : com.sun.javafx.collections.VetoableObservableList.remove (VetoableObservableList.java:179에서 263) ) com.leapmotion.leap.LeapJNI.SwigDirector_Listener_onFrame에서 MovementSample $ HandListener.onFrame (MovementSample.java:136) (에서 LeapJNI.java:495)

이 문제의 원인이 코드의 조각은 다음과 같습니다 areOverlapping()가 어떤 논리를 검사 단지 방법이다

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

- 문제가 없다.

내 질문은 : 장면이있는 경우 내 화면에서 사각형을 제거하려면 어떻게합니까? 또한, 내 코드에서 무엇을 잘못 했습니까?

+0

에 대한 자세한 내용은 Platform.runLater

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

그들을 둘러싸고 :하지 FX 애플리케이션 thread'에. JavaFX 응용 프로그램 스레드에서 수행해야하는 작업을 시도하고 있습니다. 사용자가 새 스레드를 작성하고 사각형을 조작하려고 시도했을 수 있습니다. – ItachiUchiha

+0

아, 그렇습니다. 이 두 스레드를 어떻게 연결합니까? 다른 말로하면, 어떻게 다른 스레드가 그렇게할까요? –

+0

더 명확하게 답변 추가 – ItachiUchiha

답변

2

오류는

IllegalStateException이 말한다 :하지 FX 응용 프로그램 스레드에서 당신은 자바 FX 애플리케이션 스레드에서 수행해야하는 조작을하려고하고 당신이 그것을에없는

. JavaFX Application thread에 일을 실행하기 위해

는 오류가`IllegalStateException이 말한다 Modifying UI components in JavaFX

관련 문제