2013-11-03 11 views
5

Ho un problema con il thread dell'applicazione Java FX. Ecco uno pseudo-codice:Come funziona il thread dell'applicazione JavaFX?

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

Il problema è che il sonno si verifica nella finestra che viene visualizzata in showMenu(), showLoadingPic() non viene affatto visualizzato, e alla finestra fine a showMap() è mostrato.

La scena in showLoadingPic ha una barra di avanzamento che esegue 2 secondi, che è la stessa di Thread.sleep (2000).

Quindi sembra che i blocchi di thread dell'applicazione javafx showLoadingPic() e showLoadingPic() vengano eseguiti in background.

Qualcuno può aiutarmi a risolvere questo ??

Grazie in anticipo!

risposta

9

Esiste un thread di invio di eventi FX Java, che gestisce tutte le attività relative alla GUI. È necessario aggiornare tutti i componenti dell'interfaccia utente in questo thread. Le attività a esecuzione prolungata, come Thread.sleep, non dovrebbero mai essere eseguite in questo thread, poiché Windows si bloccherà e la GUI sarà congelata.

Eseguire tutto il codice nel thread principale dell'applicazione ed eseguire solo le attività della GUI in thread JavaFX, chiamando Platform.runLater.

riferimenti su questo argomento: