0% ont trouvé ce document utile (0 vote)
68 vues57 pages

Events Java

Ce document décrit la programmation événementielle en Java. Il explique la nature des événements, les packages java.awt.event qui gèrent les événements de bas niveau et sémantiques, et comment créer et utiliser des écouteurs d'événements pour gérer les interactions utilisateur.

Transféré par

pululu
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
68 vues57 pages

Events Java

Ce document décrit la programmation événementielle en Java. Il explique la nature des événements, les packages java.awt.event qui gèrent les événements de bas niveau et sémantiques, et comment créer et utiliser des écouteurs d'événements pour gérer les interactions utilisateur.

Transféré par

pululu
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Programmation

événementielle
Cours Java - F. Michel
I. Nature des événements
Que se passe-t-il lors d'un clic ?
JFrame

MonJPanel
Que se passe-t-il lors d'un clic ?
● Un clic génère ce qu'on appelle un événement

Événement

● Il s'agit en fait d'un objet


L'objet [Link]
L'objet événement de Java
Qui crée ce type d'objet ?
● Il existe un thread spécifique, chargé de récupérer
les interactions utilisateurs (souris, clavier, etc.)

● Lors d’une interaction, ce thread instancie un


événement du type correspondant, avec le
composant concerné comme source.

● Conséquence : on ne crée pas les événements,


on ne fait que les gérer.
GUI → [Link]
II. Le package [Link]
Events bas niveau vs. sémantique

● 2 types d’événements sont distingués :


– bas niveau : e.g. clique de souris, clavier, etc.
– sémantiques : e.g. « le bouton X a été pressé »

● En priorité, on traite des events sémantiques :


– ils contiennent une information de plus haut niveau .
– Ils facilitent la gestion : presser un bouton avec le
clavier ou la souris revient au même.
[Link]
[Link]
[Link]
[Link]
[Link]
III. Gestion des événements
Comment gérer des événements ?

● Un très grand nombre d'événements sont générés

● Il est hors de question de tous les gérer

● Le principe consiste à écouter uniquement les


événements désirés sur les composants ciblés.

● → on crée des écouteurs, pour chaque event


désiré, et on les associent aux composants cibles
Qu'est-ce qu'un écouteur ?
● Un écouteur est un objet destiné à recevoir et à gérer les
événements générés
● Les écouteurs principaux se trouvent aussi dans le
package [Link]
● La plupart sont définis par une interface java : n'importe
quel objet peut devenir un écouteur.
● Exemple :

[Link]
[Link]
Création d'un écouteur
Utilisation de l'écouteur

● Au clique, rien ne se passe...


Principe de l'écoute
● Par défaut, un écouteur ne récupère pas tous les
événements produits par le système, heureusement !

● Il n'écoute que les objets qu'on lui dit d'écouter !

● Pour fonctionner, il doit être associé à un objet qui


génère des événements.

● Ainsi, les objets qui génèrent des événements possèdent


des méthodes qui permettent de leur associer les
écouteurs adéquats
[Link]
[Link]
Rappel sur l'application: 3 classes
JFrame MonJPanel

MonEcouteur
Utilisation d'un écouteur
2 boutons : 1 écouteur par objet
Remarques sur les écouteurs
● Il est possible d'ajouter plusieurs écouteurs à un
seul objet

● Il est possible d'écouter plusieurs objets avec un


seul écouteur
1 écouteur pour 2 objets
Problème : la source ?

● Comment faire pour distinguer les deux avec un


seul écouteur ?
Rappel : [Link]
On connaît la source !
Pour résumer
IV. Écoute des événements souris
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
Autre exemple
Remarque : un objet peut être son
propre écouteur !
V. Sucre syntaxique
Listeners concrets dans le JDK
● Coder un [Link] peut être
fastidieux car plusieurs des méthodes de l'interface sont
souvent vides dans les implémentations :
Package [Link]
[Link]
Les adapters de [Link]
Gérer beaucoup d'écouteurs ?!
Un écouteur par composant ?
● A priori, il est fastidieux d'écrire un écouteur par
composant: une classe par composant !
Un écouteur pour n composants ?
● L'idée est alors d'écrire un écouteur qui gère
plusieurs composants :
Un écouteur pour n composants ?
● Inconvénients :

– Code peu efficace : beaucoup de tests pour pas grand-


chose

– Le code va devenir rapidement complexe et difficile à


maintenir

– Conséquence : solution à éviter lorsqu'on a beaucoup


de boutons

Que faire ?
Un écouteur par composant !
● En fait, il faut créer une nouvelle classe écouteur
par composant !
● Mais pas de manière classique (avec un fichier par
classe)
● Il est possible de définir une classe à l'intérieur du
code d'une autre classe
● Cela facilite grandement la gestion des écouteurs :
– On va créer la classe écouteur correspondant à un
composant immédiatement après son initialisation en
utilisant une classe interne anonyme !
Les classes internes anonymes
La classe interne anonyme
Création et ajout du pour définir l'écouteur du
bouton bouton

Gestion de
l'événement
Les classes internes anonymes
● Le code précédent correspond à ce qui est obtenu
automatiquement à l'aide des outils d'édition
graphique d'un IDE (Eclipse, Netbeans)
– Il y a une séparation entre :
● Le code généré automatiquement (la classe écouteur
anonyme)

● Le code géré par le programmeur (la méthode correspondant


à la gestion de l'événement) : monBouttonActionPerformed(ActionEvent evt)

● En pratique, rien n'empêche de coder directement


la gestion de l'événement au moment de la création
de l'écouteur
Exemple
Même chose pour la souris
Pour un bouton

Pour la souris
ActionListener en Java 8

Vous aimerez peut-être aussi