IFT1025 Mikl´os Cs˝ur¨os 26 janvier 2011
6´
Ev´
enements en Swing
6.1 Event Dispatch Thread
L’interface graphique fonctionne `
a l’aide d’un proc´
essus l´
eg´
er (thread) d´
edi´
e qui s’appelle l’Event Dispatch Thread
(EDT).
main(args) return
fil d'exécution
Event Dispatch Thread
new JFrame()
interaction usager affichage (paint)
Listener paintComponent
fermeture de GUI
L’interaction usager g´
en`
ere des ´
ev´
enements. Chaque composant graphique vient avec son r´
epertoire d’´
ev´
enements
associ´
es. Pour r´
eagir aux ´
ev´
enements, il faut y attacher des ´
ecouteurs (listeners) appropri´
es. Le code d’un ´
ecouteur
s’ex´
ecute sur l’EDT. Swing g`
ere l’affichage des composants graphiques en appellant la m´
ethode paintComponent dans
l’EDT.
Pour v´
erifier si on est dans l’EDT, utiliser javax.swing.SwingUtiliities.isEventDispatchThread().
6.2 ´
Ev´
en´
ements et ´
ecouteurs
Un ´
ev´
enement en Java est represent´
e par un objet de type EventObject. Des sous-classes pr´
ed´
efinies existent dans
les packages java.awt.event et javax.swing.event. Chaque ´
ev´
enement vient d’une source (getSource()). Le
code du GUI est compos´
e de
?initialisation de composants graphiques, et de leurs relations
?pi`
eces de code pour les ´
ecouteurs qui r´
eagissent aux ´
ev´
enements int´
eressants
Il est tr`
es important d’assurer qu’on r´
epond toujours `
a l’interaction usager — ex´
ecution du code dans l’´
ecouteur
doit prendre tr`
es peu de temps !
source type d’´
ev´
enement ´
ecouteur m´
ethode(s)
JButton,JMenuItem,Timer ActionEvent (AWT) ActionListener actionPerformed
souris MouseEvent (AWT) MouseListener mouseClicked,
mousePressed,
mouseReleased,
mouseEntered,
mouseExited
souris MouseMotionEvent (AWT) MouseMotionListener mouseDragged,
mouseMoved
Exemple (´
ecouteur pour bouton)
JButton bouton = new JButton("OK");
bouton.addActionListener(
new ActionListener() // classe anonyme
{
public void actionPerformed(ActionEvent e)
{
// ce qu’on doit faire quand le bouton est press´e
}
}));
1