Vous êtes sur la page 1sur 12

Programmation orientée objet en Java

Chapitre n◦ 11: Gestion des événements

ISMAILI ALAOUI El Mehdi 1

Bachelor Génie informatique

1. Université Moulay Ismail Faculté des Sciences de Meknès Département Informatique


ISMAILI ALAOUI El Mehdi Programmation orientée objet en Java Bachelor Génie informatique 1 / 12
Plan

1 Introduction

2 Types d’événement et écouteur

3 Les méthodes définies dans les interfaces listeners

4 Convention de nomage

5 Procédure pour gérer des événements

6 XxxListener vs Xxxadaptater

ISMAILI ALAOUI El Mehdi Programmation orientée objet en Java Bachelor Génie informatique 2 / 12
Introduction

å Un évènement a lieu quand l’utilisateur agit sur l’IG (clic de souris, bouton pressé,
sélection dans une liste, fermeture d’une fenêtre, ...) ;
å Un évènement est une instance d’une classe qui étend AWTEvent ;
å Lorsqu’un événement se produit
ç Il est reçu par le composant avec lequel l’utilisateur interagit (un bouton, un
champ de texte, etc.).
ç Ce composant transmet cet événement à un écouteur (listener) qui possède
une méthode pour traiter l’événement.
ç Les objets écouteurs utilisent alors l’information contenue dans l’objet
événement pour déterminer leur réponse.
ç Listener doit implémenter l’interface XXXListener où XXX est le nom de
l’événement ;
å Les listeners sont en général des interfaces que doivent implanter des classes pour
être autorisées à recevoir un événement.
å Pour manipuler les évènements, Il faut importer les packages : java.awt.* et
java.awt.event.*

ISMAILI ALAOUI El Mehdi Programmation orientée objet en Java Bachelor Génie informatique 3 / 12
Types d’événement et écouteur

Quelques événements XXXEvent et leurs écouteurs XXXListener

XXXEvent Action générant l’événement XXXListener


• Action (clic) sur un bouton
ActionEvent • Double-clic sur item de List ActionListener
• Choix d’un MenuItem
WindowEvent Ouvrir, Fermer, Réduire, Agrandir,... WindowListener
MouseEvent Clic avec souris sur composant MouseListener
MouseMotionEvent Mouvement de souris sur composant MouseMotionListener
KeyEvent Saisie de texte au clavier KeyListener
ComponentEvent • Changement de taille, position, ComponentListener
caché, affiché, ... du composant
FocusEvent Début/fin de sélection comme destinataire FocusListener
des inputs (clavier et souris)
ListSelectionEvent Changement ds sélection liste ou table ListSelectionListener
ItemEvent • Sélection d’une Checkbox, ItemListener
• Sélection d’un item de List ou Choice
• Passage sur un MenuItem
TextEvent Modification de texte, ... TextListener
ContainerEvent Ajout/suppression de composant, ... ContainerListener

ISMAILI ALAOUI El Mehdi Programmation orientée objet en Java Bachelor Génie informatique 4 / 12
Les méthodes définies dans les interfaces listeners

A chaque classe XxxEvent est associée une interface XxxListener, qui regroupe une ou
plusieurs méthodes (lesquelles passent toutes l’événement en paramètre) :
å ActionListener : Permet de gèrer la catégorie d’évènements action (Exp : clique sur
un JBouton, appuie sur la touche «Entrer» dans un JTextField).
ç actionPerformed() : Invoque quand l’événement d’action se produit.
å WindowListener
ç windowActivated(WindowEvent e) : fenêtre active par clic
ç windowDeactivated(WindowEvent e) : fenêtre désactivée
ç windowClosed(WindowEvent e) : fenêtre fermée
ç windowOpened(WindowEvent e) : fenêtre visible 1ere fois
ç windowClosing(WindowEvent e) : fermeture par menu fermé du système
ç windowDeiconified(WindowEvent e) : fenêtre restaurée
ç windowIconified(WindowEvent e) : fenêtre réduite
å KeyListener
ç keyPressed(KeyEvent e) : touche du clavier pressée
ç keyReleased(KeyEvent e) : touche du clavier relâchée
ç keyTyped(KeyEvent e) : touche du clavier tapée

ISMAILI ALAOUI El Mehdi Programmation orientée objet en Java Bachelor Génie informatique 5 / 12
Les méthodes définies dans les interfaces listeners

å MouseListener : Permet de traiter les clics de la souris sur la fenêtre.


ç mouseClicked(MouseEvent e) : Lors d’un click souris sur un composant
ç mouseEntered(MouseEvent e) : Lorsque la souris entre dans un composant
ç mouseExited(MouseEvent e) : Lorsque la souris quitte un composant
ç mousePressed(MouseEvent e) : Lorsqu’un bouton de la souris pressé sur un
composant
ç mouseReleased(MouseEvent e) : Lorsqu’un bouton de la souris relâché sur un
composant
å MouseMotionListener : Pour les événements de déplacement.
ç mouseDragged(MouseEvent e) : Lorsqu’un bouton de la souris pressé et
glissé sur un composant
ç mouseMoved(MouseEvent e) : La souris déplacée sur un composant sans
bouton enfoncé

ISMAILI ALAOUI El Mehdi Programmation orientée objet en Java Bachelor Génie informatique 6 / 12
Les méthodes définies dans les interfaces listeners

å ComponentListener : Permet de gérer l’apparition, disparition, déplacement,


redimensionnement d’un composant.
ç componentHidden(ComponentEvent e) : le composant est rendu invisible
ç componentShown(ComponentEvent e) : le composant est rendu visible
ç componentMoved(ComponentEvent e) : la position du composant a changé
ç componentResized(ComponentEvent e) : les dimensions du composant ont
changé
å FocusListener : Permet de gérer le focus et donc de savoir si un composant a
obtenu le focus ou s’il la perdu
ç focusGained(FocusEvent e) :un composant obtient le focus
ç focusLost(FocusEvent e) : un composant perd le focus

ISMAILI ALAOUI El Mehdi Programmation orientée objet en Java Bachelor Génie informatique 7 / 12
Convention de nomage

å La nomenclature proposée par Java permet de trouver aisément les méthodes,


interfaces et objets à utiliser.
å Pour capturer un événement de type Xxx,
à La classe événement sera un XxxEvent.
à L’interface gestionnaire sera de type XxxListener.
à Le composant disposera des méthodes addXxxListener(XxxListener l) et
removeXxxListener(XxxListener l).

Exemple : Capturer un événement Souris (Mouse)


å La classe événement sera donc un MouseEvent.
å Le gestionnaire devra implémenter l’interface MouseListener.
å On ajoutera le gestionnaire via la méthode addMouseListener du composant.

ISMAILI ALAOUI El Mehdi Programmation orientée objet en Java Bachelor Génie informatique 8 / 12
Procédure pour gérer des événements

å La procédure «classique» pour gérer les événements est la suivante :


1 Créer une classe écouteur en surchargeant la ou les fonctions appropriées.
2 Créer une instance du composant source.
3 Créer une instance de Listener.
4 Associer cet Listener au composant créé à l’étape 2. Cette étape est

nécessaire pour informer le composant de la présence d’un nouveau Listener.


å Cette procédure est illustrée sur l’exemple suivant :
Exemple 1 : Gestion de l’interface ActionListener
A chaque clique sur un bouton graphique nommé «OK», le message «bouton cliqué» est affiché
sur la console.
class EcouteBouton implements ActionListener{ 1
public void actionPerformed(ActionEvent e){System.out.println("bouton cliqué") ;}
}
public class Application{
public static void main(String args[]){
JFrame fr = new JFrame("Bouton cliqué") ;
fr.setSize(200,200) ;
JButton b = new JButton("OK") ;2
EcouteBouton l = new EcouteBouton() ;3
b.addActionListener(l) ;4
fr.add(b) ; fr.show() ;
}
}
ISMAILI ALAOUI El Mehdi Programmation orientée objet en Java Bachelor Génie informatique 9 / 12
Procédure pour gérer des événements

Exemple 2 : Gestion de l’interface MouseListener


class MyEcouteur implements MouseListener {
public void mouseClicked(MouseEvent e){
System.out.println("clic en ("+e.getX()+","+e.getY()+")") ;
}
public void mouseReleased (MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseLeaved(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
}
public class Application1{
public static void main(String[] args){
JFrame fr = new JFrame("Clic") ;
fr.setSize(200,200) ;
fr.addMouseListener(new MyEcouteur()) ;
fr.show() ;
}
}

Remarque
On constate que dans l’exemple précèdent, nous n’avions eu besoin que de la méthode
mouseClicked mais on était obligé de redéfinir les autres méthodes de l’interface puisque Java
l’impose lors de l’implémentation d’une interface.
ISMAILI ALAOUI El Mehdi Programmation orientée objet en Java Bachelor Génie informatique 10 / 12
XxxListener vs Xxxadaptater

å Les listeners sont des interfaces, il est indispensable d’implémenter toutes les
méthodes définies. Et elles sont parfois nombreuses.
å Xxxadapter est une classe abstraite implémentant les méthodes de XxxListener
avec des corps vides à surcharger si besoin.
å L’utilisation d’adaptateur est souvent plus simple à implémenter.

Exemple : Reprenons l’exemple précédent


Version avec Listener :
class MyEcouteur implements MouseListener {
public void mouseClicked(MouseEvent e){
System.out.println("clic en ("+e.getX()+","+e.getY()+")") ;
}
public void mouseReleased (MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseLeaved(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
} Version avec adaptater :
class MyEcouteur extends MouseAdapter{
public void mouseClicked(MouseEvent evt) {
System.out.println("clic en ("+evt.getX()+","+evt.getY()+")") ;
}
}

ISMAILI ALAOUI El Mehdi Programmation orientée objet en Java Bachelor Génie informatique 11 / 12
XxxListener vs Xxxadaptater

å Java offre 7 Adapters pour faciliter l’écriture des Listener.


à KeyAdapter
à MouseAdapter
à MouseMotionAdapter
à WindowAdapter
à ComponentAdapter
à ContainerAdapter
à FocusAdapter
å Chacun des Adapters implémente l’ensemble des méthodes duListener
correspondant, il suffit de redéfinir celle(s) dont vous avez besoin.

ISMAILI ALAOUI El Mehdi Programmation orientée objet en Java Bachelor Génie informatique 12 / 12

Vous aimerez peut-être aussi