Vous êtes sur la page 1sur 43

Principe de la programmation vnementielle en Java

Cours Java - F. Michel

I. Nature des vnements

Que se passe-t-il lors d'un clic ?


JFrame

MonJPanel

Que se passe-t-il lors d'un clic ?

Un clic gnre ce qu'on appelle un vnement

Evnement

Comme (presque) tout en Java, il s'agit en fait d'un objet

L'objet vnement de Java

L'objet vnement de Java

Qui cre ce type d'objet ?

Il existe un thread de la JVM charg de rcuprer les interactions utilisateurs Si on clique sur un bouton, ce thread cre un vnement (du bon type) en utilisant le bouton comme source pour le constructeur Consquences : gnralement on ne cre pas les vnements, on ne fait que les grer.

Diffrents types d'vnements

Les vnements peuvent tre distingus selon 2 types :

bas niveau : vnements fentre/systme et interactions bas niveau (un clique de souris sur un composant, la frappe d'une touche du clavier) Smantiques : Tout le reste (un bouton a t press)

Il faut le plus possible traiter les vnements smantiques :


ils contiennent une information de plus haut niveau . Ils centralisent les vnements de bas niveau : qu'on presse un bouton avec le clavier ou la souris, le rsultat est le mme pour l'application.

II. Exemples d'vnements

java.awt.AWTEvent

java.awt.event.ActionEvent

java.awt.event.ComponentEvent

java.awt.event.InputEvent

java.awt.event.MouseEvent

java.awt.event.KeyEvent

III. Gestion des vnements

Comment grer des vnements ?

On dispose d'un trs grand nombre d'vnements

Des vnements bas niveau Des vnements smantiques

Que faut-il en faire ? Il faut les couter : tout le principe de la programmation vnementielle repose sur la dfinition des vnements et des objets qui les coutent

Qu'est-ce qu'un couteur ?

Un couteur est un objet destin recevoir et grer les vnements gnrs par le systme Les couteurs principaux se trouvent eux aussi dans le package java.awt.event La plupart du temps, il s'agit seulement d'une interface java : n'importe quel objet peut devenir un couteur du moment qu'il implmente les mthodes dfinies dans l'interface. Exemple :

java.awt.event.ActionListener

java.awt.event.ActionListener

Cration d'un couteur

Utilisation de l'couteur

On clique sur le bouton, que se passe-t-il ? Rien ne se passe : rien ne s'crit sur la sortie standard !!!!

Principe de l'coute

Par dfaut, un couteur ne rcupre pas tous les vnements produits par le systme.

Heureusement !!!!!

Il n'coute que les objets qu'on lui dit d'couter ! Donc, Il doit tre associ un objet qui gnre des vnements Ainsi, les objets qui gnrent des vnements possdent des mthodes qui permettent de leur associer des couteurs

java.awt.event.ActionListener

javax.swing.JButton

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

Problme : la source ?

Comment faire pour distinguer les deux avec un seul couteur ?

Rappel : L'objet vnement de Java

On connat la source !!

Pour rsumer

Remarque

Un objet peut tre son propre couteur !

Car un couteur est une interface

Donc, il n'y a aucune raison qu'il ne puisse pas implmenter les mthodes ncessaires

IV. coute des vnements souris

java.awt.event.MouseListener

java.awt.event.MouseListener

java.awt.event.MouseEvent

java.awt.event.MouseEvent

java.awt.event.MouseListener

java.awt.event.MouseListener

Autre exemple

Remarque : un objet peut tre son propre couteur !