Gestion des événements (suite)

Slides:



Advertisements
Présentations similaires
Approche graphique du nombre dérivé
Advertisements

Conception d’IHM en Java
Evénements Java Beans Java RMI
1 Quelques précisions sur l'héritage. 2 Signification de super.f() appel à la méthode f() masquée super : désigne l'objet appelant comme s'il était de.
A propos de java Sun, fin 1995 C++ nettoyé semi-interprété
Programmation événementielle
Android View, onClick, Activity, Modèle Vue Contrôleur
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
Page 1 Les applets Jacques Lonchamp. Page 2 Présentation Une applet est téléchargée à partir dune machine distante qui fournit le code. Ce chargement.
Voisin-Polian : Introduction à Java 1 Introduction à Java - AWT - Frédéric VOISIN – Nicole POLIAN FIIFO - « Remise à Niveau »
Les composants Graphiques Atomiques
contrat Creative Commons Paternité-Pas d'Utilisation Commerciale- Partage des Conditions Initiales à l'Identique.
FORMATION OUTILS « FONCTIONS »
Vos premiers pas en Swing
بسم الله الرحمن الرحيم. Institut Supérieure des Etudes Technologiques de Kébili.
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
Faculté I&C, Claude Petitpierre, André Maurer 1 Héritage par prototype Héritage dattributs ou de méthodes Héritage de constructeurs.
Principes de la technologie orientée objets
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
1 1 Université Evry Val d'Essonne Y. Laborde Une calculatrice (sans MVC) fonctionnant sur la base d'un modèle en Java.
Écouteurs de click d'une fenêtre
Langage Oriente Objet Cours 4.
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
Classes abstraites et Interfaces
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
Graphical User Interface (GUI)
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
Gestion des événements liés à la fenêtre et aux périphériques dentrée.
Graphical User Interface
5.1 URDL22005 Systèmes dexploitation Threads Vue dEnsemble Modèles de Multithreading Problèmes des Threads Pthreads Threads Windows XP Threads Linux Threads.
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Retour sur MVC. POO3 Introduction aux IHM et à la réflexivité Java Vos premiers pas en Swing.
Un patron de conception
Design Patterns Factory Method – Pattern de construction [DANT] Génie Logiciel 1.
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Android View, onClick, Activity, Modèle Vue Contrôleur
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Nous finissons Je regarde.. Le Présent Ils vendent.
99 Réutilisation du code grâce à l'héritage. 9-2 Objectifs À la fin de ce cours, vous serez capables de : Définir l'héritage Utiliser l'héritage pour.
1111 Gestion des exceptions Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions.
Mon émission préférée Lesson Objectives: In this lesson you will learn how to say what time your favourite programme is on, and on which channel.
Objectifs À la fin de ce cours, vous serez capables de :
LIFI-Java 2004 Séance du Mercredi 22 sept. Cours 3.
Factory Design Patterns. Contents Factory patterns: principesFactory patterns: principes The Factory Method patternThe Factory Method pattern The Abstract.
Evénements. Plan Evénements Principes Exemples Adapteur.
1 Algorithmique et programmation en février - juin 2007 ORSAY.
Variables et accès en Java. Déclaration des variables final transient static private Printer hp; transient => ne doivent pas être sérialisées volatile.
Cours 7 Classes locales Clonage Divers: tableaux.
Interfaces graphiques. Composants d'interface utilisateur graphique (GUI) 1 Bibliothèques Awt et Swing Procédures communes pour l'utilisation de ces clases.
14 La gestion d’événements
Dyalog.Net Peter Donnelly Managing Director Dyadic Systems Toronto 30/10/2002.
12/04/ Les exceptions Cours 11 Cours 11.
Les classes et les objets Les données finales class A { … private final int n = 20 ; // la valeur de n est définie dans sa déclaration … } class A { public.
Schéma de conception Factory Method Exemple Sylvain Giroux.
© Sofia ZAIDENBERG CNRS Mai Interface utilisateur graphique en Java Construire une interface graphique en Java (suite) adaptateurs d’événements.
Introduction à la programmation objet avec java
Héritage Conception par Objet et programmation Java
 1) Il faut connaître le modèle et son fonctionnement  2) Définir le contrôle que l’on veut faire ouvrir, fermer, afficher, etc.) sur le modèle  3)
Les interfaces de gestion d’événements (la suite).
What’s the weather like?. Look at the verb phrase fait-il above Turn it around and you have il fait The phrase Il fait can be used to describe lots of.
PROCESSING Semaine 03. PLAN DE LEÇON Interaction avec un programme Gestion de la souris Gestion du clavier.
Flash 2 ème séance Interaction François Marliac Mickaël Moreira.
Chapitre 7: Héritage Présentation pour Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus Java Software.
Chapitre 5: Améliorer les Classes Présentation pour Java Software Solutions Foundations of Program Design Deuxième Edition par John Lewis et William Loftus.
Java Swing. Principes de base  Des composants graphiques (exemple: JFrame, JButton …)  Hiérarchie de classes  Des événements et les actions à effectuer.
Les interfaces de gestion d’événements (la suite)
Transcription de la présentation:

Gestion des événements (suite) Exemple 1 : gérer l'événement "action sur bouton" Exemple 2 : gérer des événements "souris" de bas niveau Exemple 3 : quitter l'application quand on ferme la fenêtre graphique

Rappels Un objet source d'événements possède une liste d'objets écouteurs de ces événements instance d'une classe qui implémente l'interface ActionListener b.addActionListener(o) écouteur o b Les écouteurs s'enregistrent auprès de l'objet source

Rappels Lors d'un événement, l'objet source active la méthode appropriée de chacun des écouteurs l'utilisateur clique sur le bouton o.actionPerformed(e) écouteur o b b : - crée un ActionEvent e - pour tout écouteur o de sa liste, appelle o.actionPerformed(e) exécute actionPerformed(e)

Synthèse du mécanisme général Rappels Synthèse du mécanisme général Un objet qui peut être source d'événements possède une liste d'objets écouteurs Lorsque le système l'avertit d'une certaine action : il génère un événement d'un certain type, il déclenche la méthode appropriée (prévue dans l'interface correspondante) sur tous les objets de cette liste en passant l'événement en paramètre

Evénements de bas niveau / haut niveau Bas niveau : correspond à une action physique de l'utilisateur ex : un clic souris (MouseEvent) appui sur une touche (KeyEvent) Haut niveau : il a été "interprété" une signification lui a été donnée ex : une action sur bouton (ActionEvent) peut-être due à des événenements de bas niveau différents : un clic souris ou appui de la touche "return"

Exemple 2 : gérer des événements "souris" (dits "de bas niveau") Objet source : n'importe quel composant 2 interfaces pour les écouteurs MouseListener MouseMotionListener

Interface MouseListener void mousePressed(MouseEvent e) void mouseReleased(MouseEvent e) void mouseClicked(MouseEvent e) void mouseEntered(MouseEvent e) void mouseExited(MouseEvent e) Interface MouseMotionListener void mouseMoved(MouseEvent e) void mouseDragged(MouseEvent e)

Problème étant donnée une fenêtre contenant un panneau, réagir à certaines actions de la souris sur le panneau : souris pressée, souris relâchée, souris cliquée par un affichage dans la fenêtre console : type d'action au point x y QUI écoute? Solution 1 : un objet instance d'une classe dédiée classe externe ou interne classe interne anonyme Solution 2 : le panneau ou la fenêtre

Solution 1. Ecouteur d'une classe dédiée On doit implémenter 5 méthodes alors 3 seulement nous intéressent... Notion de classe "adapteur" : classe qui implémente l'interface avec un corps vide pour chaque méthode Il existe une classe adapteur pour la plupart des interfaces qui spécifient plusieurs méthodes

public abstract class MouseAdapter extends Object implements MouseListener An abstract adapter class for receiving mouse events. The methods in this class are empty. This class exists as convenience for creating listener objects. Mouse events let you track when a mouse is pressed, released, clicked, when it enters a component, and when it exits. (To track mouse moves and mouse drags, use the MouseMotionAdapter.) Extend this class to create a MouseEvent listener and override the methods for the events of interest. (If you implement the MouseListener interface, you have to define all of the methods in it. This abstract class defines null methods for them all, so you can only have to define methods for events you care about.)

Solution 2. La fenêtre ou le panneau écoute Pas d'héritage multiple : les classes Fenêtre (dérivée de JFrame) et PanneauSouris (dérivée de JPanel) ne peuvent donc dériver aussi de la classe MouseAdapter Une classe d'écouteur dédiée (anonyme ou non) est donc plus commode ici

Exemple 3 : quitter l'application quand on ferme la fenêtre graphique Créer un écouteur des événements sur cette fenêtre

Interface WindowListener

public class Fenetre extends JFrame { …………… public Fenetre() // constructeur Terminator t = new Terminator(); addWindowListener(t); } ……… Ecrivons la classe Terminator

public class Terminator implements WindowListener { public void windowClosing (WindowEvent e) { System.exit(0); } // et les 6 autres méthodes avec un corps vide } Ouf! On a la classe WindowAdapter public class Terminator extends WindowAdapter { public void windowClosing (WindowEvent e) { System.exit(0); } }

Revenons à la classe Fenetre : public Fenetre() // constructeur { …………… Terminator t = new Terminator(); addWindowListener(t); } La référence t n'est pas utile addWindowListener(new Terminator()); Le nom Terminator non plus…. on fait de Terminator une classe interne anonyme

public class Terminator extends WindowAdapter { public void windowClosing (WindowEvent e) { System.exit(0); } } addWindowListener( new Terminator()); devient : addWindowListener( new WindowAdapter() { public void windowClosing (WindowEvent e) { System.exit(0); } } );

Et si c'était la fenêtre qui écoutait ses propres événements? public class Fenetre extends JFrame implements WindowListener { …………… public Fenetre() // constructeur { addWindowListener(this); } public void windowClosing (WindowEvent e) { System.exit(0); } // et les 6 autres méthodes de l'interface WindowListener avec un corps vide ………

Remarque : La classe JFrame fournit aussi la méthode Remarque : La classe JFrame fournit aussi la méthode setDefaultCloseOperation(...) ex: setDefaultCloseOperation(EXIT_ON_CLOSE);