2013-11-03 3 views
5

Java FX 응용 프로그램 스레드에 문제가 있습니다.JavaFX 응용 프로그램 스레드는 어떻게 작동합니까?

showMenu(); 
//Contoller which waits for action(pressing button)... 
showLoadingPic(); 
Thread.sleep(2000); 
showMap(); 

문제)는 수면 (showLoadingPic()는, 모두 도시되지 ShowMenu는()와 showMap의 단부 창에 표시되는 윈도우에서 발생이다 : 여기서, 의사 코드는 표시됩니다.

showLoadingPic의 장면에는 Thread.sleep (2000)과 같은 시간 인 2 초의 진행률 막대가 있습니다.

그래서 javafx 응용 프로그램 스레드 블록 showLoadingPic() 및 showLoadingPic() 백그라운드에서 실행되는 것 같습니다.

누가이 문제를 해결할 수 있습니까?

미리 감사드립니다.

답변

9

모든 GUI 관련 작업을 처리하는 Java FX 이벤트 발송 스레드가 있습니다. 이 스레드의 모든 UI 구성 요소를 업데이트해야합니다. Thread.sleep과 같은 장기 실행 작업은이 스레드에서 절대로 실행하지 않아야합니다. 창이 중단되고 GUI가 으로 고정 될 것이기 때문입니다.

Platform.runLater을 호출하여 응용 프로그램 주 스레드에서 모든 코드를 실행하고 JavaFX 스레드에서 GUI 작업 만 수행하십시오. 이 주제에 대한

참고 :

관련 문제