La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

14 La gestion d’événements

Présentations similaires


Présentation au sujet: "14 La gestion d’événements"— Transcription de la présentation:

1 14 La gestion d’événements
Cours 14 Cours 14

2 Qu’est-ce qu’un événement ? On distingue :
Evénements sémantiques (signification) Evénement de bas niveau Comment est représenté un événement Evénements sémantiques, par exemple cliquer sur un bouton. Evénements de bas niveau tels l'enfoncement du bouton gauche de la souris, le relâchement ou le déplacement. Cours 14 Cours 14

3 Comment est représenté un événement
Quand ? Que faire ? Un événement est représenté par un objet mémorisant : L’endroit où il s’est produit  la source La date et l’heure. A qui doit-on le transmettre pour le traiter  l’écouteur. Les méthodes utilisables pour accéder à l’information. Cours 14 Cours 14

4 Diffusion d’un objet événement
C O U T R S Diffusion d’un objet événement vers les écouteurs Source La source est un objet Les écouteurs sont des objets Cours 14 Cours 14

5 L’objet source doit choisir ses écouteurs
objetSource.addEvenementListener(objet écouteur) ; Exemple monBouton.addActionListener(monEcouteur) L’écouteur peut être l’objet émetteur : objetSource.addEvenementListener(this) ; Cours 14 Cours 14

6 L’objet écouteur implémente l’interface prévue pour traiter l’événement. Les actions à entreprendre sont spécifiées à cet endroit là. L’interface d’écoute définit les en-têtes méthodes qui doivent impérativement être implémentées. Qui doivent être implémentées Unification du traitement des événements en Java Cours 14 Cours 14

7 Les classes les plus courantes
EventObject Object getSource() Les classes les plus courantes AWTEvent Toutes les classes dérivent de EventObject. ActionEvent ComponentEvent InputEvent WindowEvent MouseEvent KeyEvent Cours 14 Cours 14

8 Exemple : réponse à un clic sur un bouton
Un clic sur un bouton génère un événement de la classe ActionEvent. L’écouteur doit implémenter l’interface ActionListener. Cette interface définit un en-tête de méthode que l’on doit implémenter: public void actionPerformed(ActionEvent e) C’est dans cette méthode que l’on traite l’événement e reçu. Dans la classe ActionEvent on dispose des accesseurs : String getActionCommand() int getModifiers() long getWhen() String paramString() e = paramètre formel d’entrée Cours 14 Cours 14

9 Programmation de l’exemple
On se propose de changer aléatoirement la couleur du fond d’une fenêtre grâce à un bouton. On crée une fenêtre. On lui ajoute un panneau. A ce panneau on ajoute un bouton. Le bouton déclenche le changement de couleur du panneau. Cours 14 Cours 14

10 Pour répondre à un clic sur un bouton on doit :
Choisir un écouteur, Cet écouteur doit implémenter l’interface ActionListenener, C’est-à-dire programmer la méthode public void actionPerformed(ActionEvent e) Cours 14 Cours 14

11 Première variante : on crée une classe Ecouteur interne à la classe MaFenêtre
import java.awt.event.*; import java.awt.*; public class Bouton2 { public static void main( String[] args ) new MaFenêtre(« Test bouton"); // Noter l’objet anonyme } } //************************************************************************** Cours 14 Cours 14

12 class MaFenêtre extends Frame // Définition de la fenêtre {
Button monBouton; Panel panneau; MaFenêtre(String titre) super(titre); // Appel du constructeur ancêtre panneau = new Panel(); monBouton = new Button("Changer la couleur"); monBouton.addActionListener (new Ecouteur()); Noter l’objet anonyme panneau.add(monBouton); add(panneau); setBounds(400, 200, 230, 100); setVisible(true); } // fin du constructeur ………………. Expliquer classe interne  problème de visibilité de panneau e est le nom du paramètre d’entrée, ici on ne s’en sert pas. Cours 14 Cours 14

13 public void actionPerformed (ActionEvent e) // a quoi sert e ???
Suite class Ecouteur implements ActionListener // Classe interne Pourquoi interne ???? { public void actionPerformed (ActionEvent e) // a quoi sert e ??? // On repeint le fond. Tirage pseudo aléatoire int a = (int)(255*Math.random()); int b = (int)(255*Math.random()); int c = (int)(255*Math.random()); panneau.setBackground(new Color(a, b, c)); panneau.repaint(); } } // *********************************************** Fin de la classe interne } //****************************************************** Fin de la classe MaFenêtre Interne pour qu’elle ait accès au champ panneau. Cours 14 Cours 14

14 Seconde variante : la classe interne devient une classe anonyme
monBouton.addActionListener ( new Ecouteur() ); Devient : monBouton.addActionListener ( new ActionListener() { public void actionPerformed(ActionEvent e) int a = (int)(255*Math.random()); int b = (int)(255*Math.random()); int c = (int)(255*Math.random()); panneau.setBackground(new Color(a,b,c)); panneau.repaint(); } ) ; Cours 14 Cours 14

15 Ou, en écriture condensée :
monBouton.addActionListener (new ActionListener() { public void actionPerformed(ActionEvent e) { int a = (int)(255*Math.random()); int b = (int)(255*Math.random()); int c = (int)(255*Math.random()); panneau.setBackground(new Color(a,b,c)); panneau.repaint(); }}) ; Cours 14 Cours 14

16 La notion de classe adaptatrice
Cours 14 Cours 14

17 Classes d’événements ActionEvent AdjustementEvent ItemEvent TextEvent
Clic sur un bouton, sélection d'un élément de menu ou de liste, pression sur la touche Entrée dans un champ de texte AdjustementEvent Déplacement de la barre de défilement ItemEvent Sélection de cases à cocher ou d'éléments d'une liste TextEvent Le contenu d'une zone texte a changé ComponentEvent Le composant a été déplacé, affiché, caché, ou sa taille a changé ContainerEvent Un composant a été ajouté ou retiré à un conteneur FocusEvent Un composant a obtenu ou perdu le focus KeyEvent Une touche du clavier a été enfoncée ou relâchée MouseEvent Enfoncement, relâchement, déplacement WindowEvent Activation, désactivation, fermeture, mise en icône Cours 14 Cours 14

18 Tableau de synthèse Événements générés par
Interface Classe adaptatrice Méthodes Type du paramètre Accesseurs Button List MenuItem TextField ActionListener actionPerformed ActionEvent getActionCommand getActionModifiers Window WindowListener WindowAdapter windowClosing windowOpened windowIconified windowDeinconified windowClosed windowActivated windowDeactivated WindowEvent getWindow Cours 14 Cours 14


Télécharger ppt "14 La gestion d’événements"

Présentations similaires


Annonces Google