Pouvoir utiliser les listerner pendant une pause
Fermé
emilio098
Messages postés
1
Date d'inscription
mardi 17 juillet 2018
Statut
Membre
Dernière intervention
17 juillet 2018
-
Modifié le 17 juil. 2018 à 11:23
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 17 juil. 2018 à 11:44
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 17 juil. 2018 à 11:44
A voir également:
- Pouvoir utiliser les listerner pendant une pause
- Comment utiliser chromecast - Guide
- Comment utiliser wetransfer gratuit ? - Guide
- Utiliser tablette comme ecran - Guide
- Utiliser iphone comme webcam - Guide
- Comment utiliser google drive - Guide
1 réponse
KX
Messages postés
16734
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 avril 2024
3 015
17 juil. 2018 à 11:44
17 juil. 2018 à 11:44
Bonjour,
Dans quel contexte ce code s'exécute ? Tu travailles avec Swing, Java FX, autre ?
De manière générale, un listener doit rendre la main le plus vite possible, l'affichage ne sera pris en compte qu'une fois le listener terminé, tu ne dois donc pas faire une boucle infini à l'intérieur d'un listener car sinon ton affichage ne se fera jamais.
Je t'invite à créer une tâche périodique, qui va aller lire le contenu d'une variable de direction que ton listener aura modifié. Ainsi le listener aura juste à faire le set de la variable, qui ne sera pris en compte que lorsque la tâche périodique sera de nouveau appelée.
Exemple de tâche périodique qui affiche l'heure toutes les secondes :
Voir la documentation : https://docs.oracle.com/javase/10/docs/api/java/util/concurrent/ScheduledExecutorService.html
Remarque : il ne faut pas comparer des objets avec l'opérateur == qui compare les références, pas les valeurs. Il faut utiliser la méthode equals comme
Dans quel contexte ce code s'exécute ? Tu travailles avec Swing, Java FX, autre ?
De manière générale, un listener doit rendre la main le plus vite possible, l'affichage ne sera pris en compte qu'une fois le listener terminé, tu ne dois donc pas faire une boucle infini à l'intérieur d'un listener car sinon ton affichage ne se fera jamais.
Je t'invite à créer une tâche périodique, qui va aller lire le contenu d'une variable de direction que ton listener aura modifié. Ainsi le listener aura juste à faire le set de la variable, qui ne sera pris en compte que lorsque la tâche périodique sera de nouveau appelée.
Exemple de tâche périodique qui affiche l'heure toutes les secondes :
import java.util.Date; import java.util.concurrent.*; public class Test { public static void action() { System.out.println(new Date()); } public static void main(String[] args) { Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(Test::action, 0, 1, TimeUnit.SECONDS); } }
Voir la documentation : https://docs.oracle.com/javase/10/docs/api/java/util/concurrent/ScheduledExecutorService.html
Remarque : il ne faut pas comparer des objets avec l'opérateur == qui compare les références, pas les valeurs. Il faut utiliser la méthode equals comme
if(Deplacement.equals("haut"))par exemple.