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 16755 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 - 17 juil. 2018 à 11:44
KX Messages postés 16755 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 - 17 juil. 2018 à 11:44
A voir également:
- Pouvoir utiliser les listerner pendant une pause
- Utiliser chromecast - Guide
- Comment utiliser l'ia - Accueil - Guide Intelligence artificielle
- Utiliser iphone comme webcam - Guide
- Annonce en pause leboncoin ✓ - Forum Consommation & Internet
- Utiliser une tablette comme ecran pc - Guide
1 réponse
KX
Messages postés
16755
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
3 020
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.