14 La gestion d’événements

Slides:



Advertisements
Présentations similaires
La programmation orientée objet avec Java L3-MIAGE Plan
Advertisements

Réaliser en Java un programme client d’une Base de Données
Conception d’IHM en Java
1 Swing par la pratique contrat Creative Commons Paternité-Pas d'Utilisation Commerciale-Partage des Conditions Initiales à l'Identique.
Evénements Java Beans Java RMI
Les Interfaces Graphiques
Gestion des événements (suite)
Programmation événementielle
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
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.
(Classes prédéfinies – API Java)
F. Voisin : Introduction à Java 1 Introduction à Java - les interfaces - Frédéric VOISIN FIIFO - « Remise à Niveau »
Voisin-Polian : Introduction à Java 1 Introduction à Java - AWT - Frédéric VOISIN – Nicole POLIAN FIIFO - « Remise à Niveau »
Plan du cours La sérialisation: – comment stocker et restaurer les Objets? Les interfaces graphiques et la programmation évènementielle. –Comment concevoir.
Les Interfaces graphiques Les Swing. Les interfaces graphiques: Introduction Une application est une boîte noire. Prend des entrées et produit des sorties.
Les composants Graphiques Atomiques
contrat Creative Commons Paternité-Pas d'Utilisation Commerciale- Partage des Conditions Initiales à l'Identique.
Introduction aux IHM et à la réflexivité Java Vos premiers pas en Swing.
Vos premiers pas en Swing
JAV - TD 6 Structures de données JAVA
Formulaire HTML Introduction. Définition de formulaire.
Vidéogramme séance 2 du 13 février 2012 Les Fenêtres Windows Micro Informatique au Cellier Joseph HOHN Séance du 13 février 2012 Sur le thème de Découverte.
Java : Interface Homme-Machine
Programmation orientée objet
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
Classes abstraites et Interfaces
Graphical User Interface (GUI)
Gestion des événements liés à la fenêtre et aux périphériques dentrée.
Graphical User Interface
Retour sur MVC. POO3 Introduction aux IHM et à la réflexivité Java Vos premiers pas en Swing.
Introduction au paradigme orienté-objet (suite)
Multi-Thread Jian-Yun Nie
COURS DE PROGRAMMATION ORIENTEE OBJET :
Récursion IFT1025: Programmation 2 Jian-Yun Nie. Définition Le fait pour un programme ou une méthode de s'appeler lui-même. Par exemple –Définir la notion.
Javascript 2° PARTIE : EVENEMENTS ET OBJETS
LIFI-Java 2004 Séance du Mercredi 22 sept. Cours 3.
11/04/ L'héritage Cours 7 Cours 7.
Cours 7 Classes locales Clonage Divers: tableaux.
Cours 91 9 Interfaces graphiques avec awt. Cours 92 Plan Introduction : deux bibliothèques graphiques 1.Comment se dessine une fenêtre ?  Un exemple.
Interfaces graphiques. Composants d'interface utilisateur graphique (GUI) 1 Bibliothèques Awt et Swing Procédures communes pour l'utilisation de ces clases.
Entrées / Sorties.
Strings et Tableaux en Java
Les classes présenté par: RAHMOUNE RIME / ZEKRI SELMA.
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.
© Sofia ZAIDENBERG CNRS Mai Interface utilisateur graphique en Java Construire une interface graphique en Java (suite) adaptateurs d’événements.
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Construire une interface graphique en Java
Introduction à la programmation objet avec 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)
Classes abstraites, interface Classe interne Classes enveloppes
Les interfaces de gestion d’événements (la suite).
Projet Java : La classification périodique des éléments sous forme d’Applet Projet réalisé en 2006 par : BESSON Sandra FLOREA Alina FOUCAULT Julie SALLOT.
Présentation Dreamweaver – Partie 2 Mickaël PIQUE – Automne 2004.
** Flash séance 2 Action script. ** Action Script Ajoute de l’interactivité Permet de contrôler les clips  Langage de programmation orienté objet.
Flash 2 ème séance Interaction François Marliac Mickaël Moreira.
Flash MX – Séance 2 Interactions & ActionScript David Rapin Si28 P06.
Dreamweaver le retour Avec Les Formulaires Les Calques
FORMULAIRES FOMULAIRE Permet à l’utilisateur d’entrer des renseignements le concernant. Utilisation –Inscription sur un site –Mise à jour d’une base.
Les formulaires Les calques Les comportements Les scénarios Les modèles Les feuilles de styles (CSS) La mise en ligne Les formulaires permettent à l’utilisateur.
Sommaire : -A propos des images importées -Les boutons et l’interactivité dans la scène -Textes dynamiques -Les clips (les liaisons) -Les sons -Les composants.
DREAMWEAVER MX2 - Séance 2 Les calques Les comportements Les scénarios Les formulaires Les feuilles de style Les modèles Les cadres Mise en ligne Jérôme.
Dreamweaver 2 Feuilles de Style CSS Formulaires Calques Comportements
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:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

La notion de classe adaptatrice Cours 14 Cours 14

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

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