Vous êtes sur la page 1sur 7

24/02/2013

Interface graphique en Java Les vnements


Enseignante: Chiraz El Hog Amri Auditoire: FIA1 ISSAT
Anne Universitaire: 2012-2013

Les vnements
Un clic souris, la frappe dune touche au clavier ou le changement de la taille dune fentre sont des exemples dvnements. vnements dclenchs par une action utilisateur. Tous les constituants de linterface sont sensibles ces vnements. Un vnement dpend du composant qui la gnr. On appelle source dun vnement lobjet qui la gnr Tout vnement qui peut se produire dans une interface graphique est de type XXXEvent, classe du paquetage java.awt.event ou du paquetage javax.swing.event
2

Les vnements
Un composant ne traite pas forcment lui mme les vnements quil gnre. Il dlgue ce traitement des objets particuliers appels couteurs (un composant peut tre son propre couteur). En fonction des vnements quils traitent, un couteur doit implmenter une interface particulire, drive de linterface EventListener, qui correspond une catgorie dvnements. Pour traiter un vnement de type XXXEvent, un couteur doit implmenter linterface XXXListener.
3

Types dvnements
vnements lmentaires:
Tous les constituants de linterface sont sensibles ces vnements. Il sagit des vnements du clavier et de la souris.

vnements des composants de linterface


Se produisent lorsque lon coche une case, on slectionne un lment dans une liste, etc.

24/02/2013

Evnements lmentaires
vnements Clavier: saisie des caractres
Evnement Classe dvneme nt KeyEvent Interface couteur KeyListener Mthodes de linterface keyPressed keyReleased keyTyped ID de lvnement KEY_PRESSED KEY_RELEASE D KEY_TYPED

Evnements lmentaires
vnements Clavier: saisie des caractres
interface KeyListener{ public void keyPressed(KeyEvent e); public void keyReleased(KeyEvent e); public void keyTyped(KeyEvent e); }

Touche appuye Touche lache Touche tape

Evnements lmentaires
vnement souris
Evnement clic sur un composant Enfoncer sur un composant Relcher sur un composant Entrer dans la zone du composant Quitter la zone d'un composant Mouvement de la souris mouvement + bouton enfonc MouseMotionEvent Classe dvnement MouseEvent Interface couteur Mouse Listener Mthodes de linterface mouseClicked mousePressed mouseReleased mouseEntered mouseExited MouseMotionListener mouseMoved mouseDragged
7

Evnements lmentaires
vnement souris
interface MouseListener{ public void mouseClicked(MouseEvent e); public void mousePressed(MouseEvent e); public void mouseReleased(MouseEvent e); public void mouseEntered(MouseEvent e); public void mouseExited(MouseEvent e); } interface MouseMotionListener{ public void mouseMoved(MouseEvent e); public void mouseDragged(MouseEvent e); }
8

24/02/2013

Evnements de composants dinterface


Les vnements de composants dinterface se produisent lorsque lon coche une case, on slectionne un lment dans une liste, etc. Voir tableau suivant

Type dvnement Action

vnement
Frquemment rcupr. Bouton actionn, lments de menu slectionn (Jmenu, JMenuItem) Modification de la position de lascenseur (JScrollBar) Changement dtat en gnral: JButton, JRadioButton, JMenuItem, JProgressBar Slection dun lment de type JComboBox ou JCheckBox, JRadioButton Modification, insertion ou suppression de texte dans un document Dplacement du curseur dinsertion (JTextComponent) Slection dun ou plusieurs lments au sein dune JList Slction, dslection, annulation dans un JMenu

Classe dvnement
ActionEvent

Interface couteur
ActionListener

Mthodes associes
actionPerformed

Ajustement Changement

AdjustmentEvent ChangeEvent

AdjustmentListener ChangeListener

adjustmentValueChanged stateChanged

Elment

ItemEvent

ItemListener

itemStateChanged

Document

DocumentEvent

DocumentListener

changedUpdate, removeUpdate, insertUpdate caretUpdate

Curseur

CaretEvent

CaretListener

Slection

ListSelectionEvent

ListSelectionListener

valueChanged

Slction menu
9

MenuEvent

MenuListener

menuSelected menuDeselected menuCanceled

10

Evnements de composants dinterface


interface ActionListener{ Public void actionPerformed(ActionEvent e);} interface ItemListener{ Public void itemStateChanged(ItemEvent e);}

Programmation par vnements


1. 2. 3. 4. Un couteur sabonne une source. La source dclenche lvnement. La source le passe aux couteurs abonnes. Les couteurs abonns ragissent et retournent le rsultat.

11

12

24/02/2013

Les couteurs (Listeners)


Pour chaque lment pour lequel on veut traiter les vnements il faudra :
Crer une classe obtenue, selon le cas, par implmentation dune interface ou par hritage dun modle dcouteur (Adapter) correspondant au type dvnement que lon dsire traiter. Y crire les actions associes aux vnements dans les mthodes correspondantes. Associer cette classe au composant par la mthode addxxxListener de celui-ci. On utilisera selon le cas addActionListener, addMouseListener ... (se reporter aux tableaux prcdents pour les noms)
13

Exemple
Dfinition lextrieur

14

Exemple
Dfinition dans la classe qui gre laction

Les adaptateurs
Lcouteur dfini partir dune interface XXXListener doit crire toutes les mthodes mme si elles sont vides. Pour chaque interface XXXListener possdant plusieurs mthodes, Java fournit une classe particulire XXXAdapter, appele adaptateur, qui implmente toutes les mthodes de linterface avec un corps vide. Pour dfinir un couteur dvnements de type XXXEvent, il suffit alors de driver lcouteur de la classe XXXAdapter et de redfinir uniquement les mthodes voulues.
15 16

24/02/2013

Les adaptateurs
Les adaptateurs dvnement portent le suffixe Adapter (au lieu de Listener).
Interfaces : MouseListener, KeyListener Classes : MouseAdapter, KeyAdapter

Les adaptateurs
Exemple

Pour lcouteur dfini par hritage dune classe Adapter, seules les mthodes utiles sont crites (les autres sont hrites vides).

17

18

Les adaptateurs
Exemple

Les classes internes


Une classe est dite interne lorsque sa dfinition est situe lintrieure dune autre classe (ou dune mthode).

19

20

24/02/2013

Les classes internes


Un objet dune classe interne est toujours associ, au moment de son instanciation, un objet dune classe externe dont on dit quil lui a donn naissance. Un objet dune classe interne a toujours accs aux champs et mthodes (mme privs) de lobjet externe lui ayant donn naissance. Un objet dune classe externe a toujours accs aux champs et mthodes (mme privs) de lobjet interne auquel il a donn naissance.
21

Les classes anonymes


Une classe anonyme est une classe sans nom. Elle peut driver dune autre classe.

22

Les classes anonymes


Une classe anonyme peut galement implmenter une interface.

Exercice

23

24

24/02/2013

Exercice

25