|
Swing - Interface Homme-Machine
10.3.Les listeners d’évènements
10.3.1.Les listeners hérités
de AWT
Les Listeners
sont créés par l’implémentation d’une
ou de plusieurs interfaces fournies par le package java.awt.event.
Lorsque l’événement survient la source appelle
la méthode du listener appropriée qui a été
redéfinie.
L’implémentation d’une
interface impose donc redéfinissiez une ou plusieurs méthodes
obligatoires. De plus des objets nommés « Adapter »
fournissent une implémentation par défaut ou toutes
les méthodes ont un corps vide. Ces objets là sont en
réalité des classes et non des interfaces. Le
développeur n’a plus à implémenter toutes
les méthodes de l’interface, ce qui peut-être
fastidieux.
Ils se mettent à l’écoute
d’un composant qui s’abonne auprès d’eux et
intercèpte tous les évènements, et selon leur
nature va réagir en conséquence en exécutant la
méthode cible de l’évènement.
L’abonnement se fait par le
biais des méthodes addXxxListener(), où
Xxx représentent le type d’évenement. Les
Listeners les plus communs sont illustrés brièvement
ici. Un tableau général fait état de l’ensemble
des Listeners avec les méthodes à implémenter.
Il faut noter que listeners pris en charge par la classe JComponent
sont communs à la plupart des contrôles Swing. Il
s’agit de ComponentListener, FocusListener,
HierachyBoundsListener, HierarchyListener,
MethodListener, KeyListener, MouseListener,
MouseWheelListener, ContainerListener,
PropertyChangeListener, AncestorListener,
VetoableChangeListener, …
ActionListener :
Définit la méthode pour intercepter les événements
d’actions.
void
actionPerformed(ActionEvent ae)
ComponentListener :
Définit le comportement à adopter quand un élément
graphique est caché, déplacé, redimensionné
ou affiché.
void
componentHidden(ComponentEvent ce)
void
componentMoved(ComponentEvent ce)
void
componentResized(ComponentEvent ce)
void
componentShown(ComponentEvent ce)
ContainerListener :
Définit le comportement à adopter quand un élément
graphique est ajouté ou supprimé d’un container.
void
componentAdded(ContainerEvent ce)
void
componentRemoved(ContainerEvent ce)
FocusListener :
Définit le comportement à adopter quand un élément
graphique a obtenu ou perdu le focus.
void
focusGained(FocusEvent fe)
void
focusLost(FocusEvent fe)
KeyListener :
Définit le comportement à adopter quand une touche est
appuyée, relâchée ou si une lettre a été
tapée.
Ex : Touche c appuyée → appel successif des 3
méthodes.
Ex : Touche Shift appuyée → appel successif des 2
premières méthodes uniquement
void
keyPressed(KeyEvent ke)
void
keyReleased(KeyEvent ke)
void
keyTyped(KeyEvent ke)
MouseListener :
Définit le comportement à adopter quand on clique avec
la souris, appuye sur un bouton, relâche un bouton, si le
pointeur de la souris entre ou sort de la zone d’un élément
graphique.
void
mouseClicked(MouseEvent me)
void
mouseEntered(MouseEvent me)
10.3.2.Résumé des
listeners
ActionListener est utilisé le plus souvent lors des
cliques sur un bouton par exemple. Le fait d’implémenter
ce listener vous imposera de redéfinir la méthode
actionPerformed(ActionEvent).
FocusListener est utilisé lorsqu’un composant
graphique reçoit ou perd le focus. Le fait d’implémenter
ce listener vous imposera de redéfinir les méthodes
focusGained(FocusEvent) et focusLost(FocusEvent).
Vous pouvez également hériter de la classe
FocusAdapter au lieu d’utiliser le principe de
l’implémentation.
ItemListener peut être utilisé sur plusieus
composant différents. Le plus souvent il est mis en action
lors d’un selection dans une JComboBox afin de prendre
en compte l’élément sélectionné de
manière le plus dynamique possible en redéfinissant la
méthode itemStateChanged(ItemEvent).
ListSelectionListener est utilisé avec le composant
JList pour gérer les évènements liés
à la selection de valeur dans ce composant en redéfinissant
la méthode valueChanged(ListSelectionEvent).
-
Listeners d’entrées de données
KeyListener est utilisé sur les composants qui
permettent à l’utilisateur de saisir du texte,
JTextField, JPasswordField, … Le fait
d’implémenter ce listener vous imposera de redéfinir
les méthodes : keyPressed(KeyEvent),
keyReleased(KeyEvent), keyTyped(KeyEvent) ou d’hériter
de la classe KeyAdapter au lieu d’utiliser le principe
de l’implémentation.
MouseListener est un listener, comme le suivant qui peuvent
être employés sur beaucoup de composant différents.
Vous pouvez par exemple prendre en compte le clique sur un JLabel
contenant une image. Le fait d’implémenter ce listener
vous imposera de redéfinir les méthodes :
mouseClicked(MouseEvent), mouseEntered(MouseEvent),
mouseExited(MouseEvent), mousePressed(MouseEvent),
mouseReleased(MouseEvent) ou vous pouvez hériter de la
classe MouseAdapter au lieu d’utiliser le principe de
l’implémentation.
MouseMotionListener est un listner trés semblable au
précédent, cependant celui-ci vous permettra de gérer
l’action de drag & drop. Le fait d’implémenter
ce listener vous imposera de redéfinir les méthodes :
mouseDragged(MouseEvent), mouseMoved(MouseEvent). Si vous ne
souhaitez pas redéfinir les deux méthodes mais
uniquement une seule d’entre elles, vous pouvez hériter
de la classe MouseMotionAdapter au lieu d’utiliser le
principe de l’implémentation.
|
|
 |