La boucle d'événements et les écouteurs
Comment une interface graphique réagit : les événements arrivent dans une file, une boucle les distribue un par un sur le fil de l'interface, les écouteurs enregistrés sur la source s'exécutent, l'événement se propage, et un traitement long gèle tout.
- 26 cartes
- 3 thèmes
- Gratuit
Le programme, thème par thème
Le poids de chaque thème suit celui que lui donne l'examen.
- Notions
- Questions
- Ranger et relier
Quelques cartes du deck
Événement : de quoi s'agit-il ?
Voir la réponse
Fait survenu dans l'application, déclenché par l'utilisateur ou le système : clic, frappe de touche, fermeture de fenêtre, fin d'un minuteur.
En programmation événementielle, le programme n'appelle plus la suite lui-même : il attend qu'un événement arrive et réagit. L'objet événement porte sa source et son type.
Le bouton est un enfant du panneau, et on clique sur le bouton. Dans quel ordre le journal s'écrit-il ?
```javascript
panneau.addEventListener('click', () => journal.push('C'));
bouton.addEventListener('click', () => journal.push('A'));
bouton.addEventListener('click', () => journal.push('B'));`A,B,CC,A,BA,C,BB,A,C
Voir la réponse
A,B,CLes écouteurs d'une même source s'exécutent dans l'ordre où on les a ajoutés (A puis B). Puis l'événement remonte au parent, dont l'écouteur C passe en dernier, même s'il a été enregistré en premier.
L'objet événement transmis à l'écouteur indique son type et sa …, c'est-à-dire le composant sur lequel l'événement s'est produit.
Voir la réponse
L'objet événement transmis à l'écouteur indique son type et sa source, c'est-à-dire le composant sur lequel l'événement s'est produit.
Un même écouteur peut servir à plusieurs boutons :
getSource()en JavaFX ouevent.targeten JavaScript dit lequel a réagi.Écouteur : de quoi s'agit-il ?
Voir la réponse
Code qu'on enregistre auprès d'un composant pour qu'il soit appelé quand un événement d'un type donné se produit sur lui.
On ne l'appelle jamais soi-même : on le branche (
setOnAction,addEventListener) et c'est la boucle qui l'exécute. On dit aussi gestionnaire d'événement.Cette fois, l'écouteur A appelle
event.stopPropagation(). Que contient le journal après le clic sur le bouton, enfant du panneau ?
```javascript
panneau.addEventListener('click', () => journal.push('C'));
bouton.addEventListener('click', (event) => {
journal.push('A');
event.stopPropagation();
});
bouton.addEventListener('click', () => journal.push('B'));`AA,BA,B,CC
Voir la réponse
A,BstopPropagation()empêche l'événement de remonter au parent, donc C n'est pas exécuté. Les autres écouteurs du même bouton, eux, s'exécutent quand même : seulstopImmediatePropagation()les arrêterait.