JFrame et Thread
Fermé
khalil-kt
Messages postés
16
Date d'inscription
lundi 13 juin 2016
Statut
Membre
Dernière intervention
10 juillet 2016
-
10 juil. 2016 à 16:45
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 10 juil. 2016 à 17:13
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 10 juil. 2016 à 17:13
A voir également:
- JFrame et Thread
- Thread - Accueil - Guide réseaux sociaux
- Compte thread - Accueil - Réseaux sociaux
- Thread stuck in device driver ✓ - Forum Windows 10
- C'est quoi thread instagram - Accueil - Instagram
- Thread instagram c'est quoi - Accueil - Guide arnaque
1 réponse
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
10 juil. 2016 à 17:13
10 juil. 2016 à 17:13
Bonjour,
Tu fais cela dans un Listener (par exemple en appuyant sur un bouton) ?
Il faut savoir que tant que l’événement n'est pas complètement traité (donc à la fin des 3 secondes) rien d'autre ne peut affiché.
Cela explique d'une part pourquoi les affichages intermédiaires (1 et 2) ne sont pas affichés, et d'autre part pourquoi la fenêtre freeze.
Pour t'en sortir il faut que tu exécutes une tâche de fond qui va faire les affichages secondes par secondes en parallèle du reste du programme et en particulier permettre de terminer l’événement et donc permettre de faire de nouveaux affichages.
Voir : Worker Threads and SwingWorker
Exemple :
Tu fais cela dans un Listener (par exemple en appuyant sur un bouton) ?
Il faut savoir que tant que l’événement n'est pas complètement traité (donc à la fin des 3 secondes) rien d'autre ne peut affiché.
Cela explique d'une part pourquoi les affichages intermédiaires (1 et 2) ne sont pas affichés, et d'autre part pourquoi la fenêtre freeze.
Pour t'en sortir il faut que tu exécutes une tâche de fond qui va faire les affichages secondes par secondes en parallèle du reste du programme et en particulier permettre de terminer l’événement et donc permettre de faire de nouveaux affichages.
Voir : Worker Threads and SwingWorker
Exemple :
SwingWorker worker = new SwingWorker<Void, Void>() { @Override public void doInBackground() { for (int i = 0; i <= 3 ; i++){ compteARebour.setText(Integer.toString(i)); Thread.sleep(1000); } } @Override public void done() { } }; worker.execute();