Ho un problema mentre lavoro con JavaFX e Thread. Fondamentalmente ho due opzioni. Lavorare con Tasks
o Perform.runLater
. Come ho capito Perform.runLater
dovrebbe essere usato per compiti semplici/corti, mentre Task
per quelli più lunghi. Tuttavia, non posso usare nessuno di loro. Quando chiamo Thread
deve apparire una finestra di dialogo captcha in mezzo al compito. Durante l'uso di Task
, ignora la mia richiesta di mostrare una nuova finestra di dialogo ... Non mi permette di creare un nuovo stage. D'altra parte, quando uso lo Platform.runLater
mi consente di visualizzare una finestra di dialogo, tuttavia, una finestra del programma si blocca fino a quando viene visualizzata una finestra di dialogo a comparsa. Ho bisogno di qualsiasi tipo di soluzione per questo. Se qualcuno sa come gestire questo o ha avuto esperienze simili e ha trovato una soluzione, non vedo l'ora di sentirti!JavaFX che funziona con thread e GUI
risposta
Come puce dice, è necessario utilizzare Task
o Service
per le cose che devi fare in background. E Platform.runLater
fare le cose nel thread dell'applicazione JavaFX dal thread in background.
È necessario sincronizzarli e uno dei modi per farlo è utilizzare la classe CountDownLatch
.
Ecco un esempio:
Service<Void> service = new Service<Void>() {
@Override
protected Task<Void> createTask() {
return new Task<Void>() {
@Override
protected Void call() throws Exception {
//Background work
final CountDownLatch latch = new CountDownLatch(1);
Platform.runLater(new Runnable() {
@Override
public void run() {
try{
//FX Stuff done here
}finally{
latch.countDown();
}
}
});
latch.await();
//Keep with the background work
return null;
}
};
}
};
service.start();
Esattamente quello che stavo cercando. Grazie mille! – ksarunas
Utilizzare un Worker
(Task
, Service
) dal thread Applicazione JavaFX se si desidera eseguire qualcosa in background.
http://docs.oracle.com/javafx/2/api/javafx/concurrent/package-summary.html
Usa Platform.runLater
da un thread in background, se si vuole fare qualcosa sul filo JavaFX Application.
Creo un lavoratore (attività). Una volta che ho bisogno di mostrare un pop up, chiamo Platform.runLater, ma ho bisogno di aspettare la risposta (è una finestra di dialogo di input), ma se creo un nuovo thread (Platform.runLater) non aspetta la risposta e Worker continua ... Come affrontarlo Forse c'è un modo per mettere in pausa il thread Worker attendere input da Platform.runLater e poi continuare ...? – ksarunas
- 1. Throttling aggiornamenti gui javafx
- 2. javafx, programmazione socket e thread
- 3. JavaFX 2.1 e thread? -oppure- Terminare un'applicazione JavaFX con garbo?
- 4. Come funziona il thread dell'applicazione JavaFX?
- 5. JavaFX: Canvas to Image in thread non GUI
- 6. JavaFx - GUI di aggiornamento
- 7. Qt GUI non funziona con std :: thread come previsto
- 8. È possibile creare una GUI sexy con javaFX e swing?
- 9. Thread WPF e GUI come accedere all'oggetto da thread diversi?
- 10. Netbeans 7/7.1 javafx GUI designer/builder
- 11. Qt Main-Gui e altri thread + loop di eventi
- 12. Attività di rendering pesante (in tela) in blocchi JavaFX GUI
- 13. In che modo JavaFX 8 avvia il thread JavaFX Application in una classe Application quasi vuota?
- 14. JavaFX e vecchio PC con Windows XP
- 15. Timer e javafx
- 16. JavaFX ChangeListener non funziona sempre
- 17. JavaFX - Thread in background per query SQL
- 18. Che gui toolkit dovrei usare con Pygame?
- 19. Scala, GUI e immutabilità
- 20. Framework di test della GUI per JavaFX 2
- 21. Come funziona JavaFX rispetto a Flash e Flex?
- 22. JavaFx: Method selectAll() funziona solo tramite focus con tastiera
- 23. JavaFX e compilazione di HelloWorld con Ant
- 24. Errore grafico JavaFX con progressBar e Slider
- 25. Toolkit Gui, che dovrei usare?
- 26. JavaFX TextArea e autoscroll
- 27. GUI e prestazioni
- 28. Perché lo stesso codice è molto più lento nel mio thread BackGroundWorker che nel mio thread GUI?
- 29. Associazione JavaFX e valori nulli
- 30. JavaFX 2 e Internazionalizzazione
possibile duplicato di [JavaFX2:? Posso mettere in pausa uno sfondo Compito/servizio] (http://stackoverflow.com/questions/14941084/javafx2-can-i- pause-a-background-task-service) – jewelsea