Passerelle M1 remise à niveau

Slides:



Advertisements
Présentations similaires
Conception d’IHM en Java
Advertisements

Evénements Java Beans Java RMI
Les Interfaces Graphiques
Gestion des événements (suite)
Gestionnaires de géométrie
Voisin-Polian : Introduction à Java 1 Introduction à Java - AWT - Frédéric VOISIN – Nicole POLIAN FIIFO - « Remise à Niveau »
Les Interfaces graphiques Les Swing. Les interfaces graphiques: Introduction Une application est une boîte noire. Prend des entrées et produit des sorties.
Modèles d’architecture
Graphical User Interface (GUI)
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
Interface graphique PO2 ( ) Chapitre 3 Gestionnaires géométrie.
Iup MIAGe 3° année Projet MIAGe Toulouse – Groupe 21 Charte graphique.
 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)
Cours d’introduction à Java Christophe Vaudry IUT - Cycle IRISM Année
Les interfaces de gestion d’événements (la suite).
Java Swing. Principes de base  Des composants graphiques (exemple: JFrame, JButton …)  Hiérarchie de classes  Des événements et les actions à effectuer.
Catalog fonctionne sur vos données Catalog est préconfiguré pour fonctionner directement avec les données – WinBooks Accounting – WinBooks Logistics –
Stéphane Frénot, Frederique Laforest, Frédéric Le-Mouël IJA 1 TD 7 IJA Les interfaces graphiques JAVA.
GCstar Gestionnaire de collections personnelles Christian Jodar (Tian)
Stéphane Frénot, Frederique Laforest, Frédéric Le-Mouël IJA 1 TD 6 IJA Structures de données JAVA.
UML2 : Panorama de la notation Laurent Henocque Enseignant Chercheur ESIL/INFO France
Exploitation de logiciels :
Module de gestion des tournées de livraison
Chapitre 8 Gestion des événements
Environnement du développement de BD ORACLE REPORTS 10g
Chapitre 7 Java Abstract Window Toolkit
Pas de variable globale
Les notions de classe et d'objet
Se connecter toujours depuis TecfaMoodle
Visite guidée - session 3 Les postes de charge et les gammes
Micro Informatique au Cellier
JavaScript.
TP N°2 : les Adresses IP *IP: Internet Protocol
Interfaces graphiques en JAVA
AIDE A L’UTILISATION DU LOGICIEL LATISPRO
Javadoc et débogueur Semaine 03 Version A17.
TP N°3 : Adressage IP Les classes IP
Collecte de données CAPI
Développement JAVA pour plateforme ANDROID
Développement d’applications interactive III
TD IHM Objectifs : - Mettre en œuvre quelques composants et containers d'interface graphique - Comprendre la notion de gestionnaire de placement - Prendre.
Réalisation d’une application web sous le thème: «Mon vétérinaire » par : Benzineb Asmaa et Meftahi Oualid Présentation à Université Saad Dahlab Blida.
Gestion du cours Aissa Boulmerka.
PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II
TD IHM Objectifs : - Mettre en œuvre quelques composants et containers d'interface graphique - Comprendre la notion de gestionnaire de placement - Prendre.
Modélisation avec UML 2.0 Partie II Diagramme de classes.
Programmation Orientée Objet
Bases de données sous Access. Initiation aux bases de données  Structure d’une base de données.
Programmation Android Première application Android
Programmation Android GUI (widgets) et ressources
Auditeur: Léonardo AMODIO Cours: NFE107
Programmation Android Les listes
Présentation SWING Siwar hadj hassen Omar ben yahya.
IDL interface définition langage. Plan Introduction Principaux éléments IDL Types de données IDL Déclaration de module Déclaration d'interface Déclaration.
Un Mécanisme d‘Adaptation Guidé par le Contexte en Utilisant une Représentation par Objets Manuele Kirsch Pinheiro Laboratoire LSR – IMAG, Équipe SIGMA.
Atos, Atos et le poisson, Atos Origin et le poisson, Atos Consulting ainsi que le poisson seul sont des marques déposées d'Atos Origin SA. © 2006 Atos.
Principes de programmation (suite)
Ouverture d’image PGM et éléments d’affichage graphique
Passerelle M1 remise à niveau
Passerelle M1 remise à niveau
1. 2 TABLEUR: Calc mars 19 Myriam Boullanger - Bureautique - Calc Suite Gratuite Libre Office Dans le navigateur (Internet Explorer, Google Chrome, FireFox,…),
Les interfaces de gestion d’événements (la suite)
ISI5 Développement d’interfaces Homme-Machine
TP: RC Université de Jijel
TP N°1 : GUI en NetBeans Module R & C Université de Jijel
DONNÉE DE BASE QM Manuel de formation. Agenda 2  Introduction  Objectif de la formation  Données de base QM: Caractéristique de contrôle Catalogue.
Business Intelligence en ACube OLAP et Reporting avec ACubeOLAP et GRaM.
TP RC.
Support de formation Administrateur Compétences
Transcription de la présentation:

Passerelle M1 remise à niveau Manuele Kirsch Pinheiro Maître de conférences en Informatique Centre de Recherche en Informatique Université Paris 1 – Panthéon Sorbonne Manuele.Kirsch-Pinheiro@univ-paris1.fr http://mkirschp.free.fr

Présentation Contenu prévisionnel Révision Programmation Orientée Objets Révision concepts de base (classe, objet, héritage, polymorphisme…) Structures des données en Java Array, List, Map, Set… Traitement d’exceptions Interface graphique AWT & Swing Traitement d’événements Design patterns Modèle MVC Architectures 2-tier et 3-tier Accès aux bases des données en Java 23/05/2019

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr AWT AWT : Abstract Windowing Toolkit Toolkit permettant la réalisation d'applications graphiques Composants interface utilisateurs (fenêtres, menus, boutons, labels, zone de texte…) Éléments graphique 2D (lignes, polygones…) Implémentation native Look & feel du système hôte Comportement pouvant varier selon la plateforme 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Hiérarchie de classes Component “A component is an object having a graphical representation that can be displayed on the screen and that can interact with the user.” (Java API) Container “A generic Abstract Window Toolkit (AWT) container object is a component that can contain other AWT components.” (Java API) 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Containers Un container peut contenir d’autres composants Méthode add (Component c) pour ajouter des nouveaux composants Un conteneur dispose d'un gestionnaire de placement (LayoutManager) LayoutManager prend en charge de la disposition des composants dans le container Principaux containers : Window Frame Panel Dialog 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Containers 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Components Component représente les composants d’interface utilisateur Observation des différents événements (actions) Différents méthodes de base set/getSize set/getVisible repaint Quelques composants Button Label TextField Canvas 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Components Label TextField Button AWT : présentation selon la plateforme Captures d’écran 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Traitement d’événements Objectif Gérer l’interaction avec l’utilisateur Chaque action génère un événement Click souris Click bouton Fermer une fenêtre … Pour traiter un type d’action donné, on doit souscrire au type d’événement lui correspondant Définition des listeners Design pattern Observer 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Traitement d’événements Les écouteurs (listeners) souscrivent aux événements auprès des sources potentiels des événements Les sources informent les listeners de l’occurrence de l’événement event listener event source Diagramme de séquence Source: SUN Java Tutorial, « Introduction to Event Listeners » 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Traitement d’événements Souscription à l’événement Publisher / Subscriber Diagramme de séquence Notification de l’événement 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Hiérarchie d’événements Tous les événements sont des sous-classes de EventObject Les événements AWT sont sous-classes de AWTEvent. Quelques exemples : Ces événements sont déclenchés par les classe d’interface utilisateur 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Hiérarchie des listeners Chaque listener observe un certain type d’événement et propose des méthodes appropriées pour les traiter. Quelques exemples : Les listeners spécialisent EventListener 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Définition d’un listener Implémentation de l’interface XXXXListener Possibilités : dans la propre classe dans une classe anonyme / inner class dans une classe dédiée / séparée 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Traitement dans la propre classe Le container qui contient le composant implémente l’interface XXXXListener approprié public class ClassAsListener extends Frame implements ActionListener, WindowListener { ... } Le container registre lui-même comme listener auprès du composant addWindowListener(this); button1.addActionListener(this); Il implémente les méthodes de l’interface XXXXListener public void actionPerformed(ActionEvent e) { … } public void windowClosing(WindowEvent e) { … } Les 3 implémentations sur le convertisseur 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Exemple dans la propre classe ClassAsListener. actionPerformed() Les 3 implémentations sur le convertisseur 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Exercice Développer une interface contenant un champ texte et un bouton. A chaque clique sur le bouton, celui-ci doit afficher le texte afficher le texte écrit sur le champ texte Utiliser un listener dans la propre classe 23/05/2019

Traitement dans une classe anonyme Utilisation d’une classe interne anonyme pour traiter les événements Classes définies localement à l’intérieur d’une méthode button1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { button1ActionPerformed(evt); } }); Principe souvent utilisé par les IDEs Les 3 implémentations sur le convertisseur 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Exemple dans une classe anonyme Les 3 implémentations sur le convertisseur 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Exercice Développer une interface contenant un champ texte et un bouton. A chaque clique sur le bouton, celui-ci doit afficher le texte afficher le texte écrit sur le champ texte Utiliser un listener dans une classe anonyme 23/05/2019

Traitement dans une inner class Utilisation d’une classe interne non-anonyme (inner class) pour traiter les événements public class InnerAsListener extends Frame { public InnerAsListener() { … button1.addActionListener(new MyActionListener()); … private class MyActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { … } } } // fin InnerAsListener Les 3 implémentations sur le convertisseur 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Exemple dans une inner class MyActionListener. actionPerformed() Les 3 implémentations sur le convertisseur 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Exercice Développer une interface contenant un champ texte et un bouton. A chaque clique sur le bouton, celui-ci doit afficher le texte afficher le texte écrit sur le champ texte Utiliser un listener dans une inner class 23/05/2019

Traitement dans une classe dédiée Utilisation d’une classe à part (extérieure), entièrement dédiée au traitement des événements Cette classe implémente les interfaces listeners souhaitées La communication entre les classes doit être gérée Classes d’interface  classe de traitement Les 3 implémentations sur le convertisseur 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Listener dans une classe dédiée Une classe dédiée au traitement des événements (d’un type donné, d’un composant ou ensemble de composants donnés) Réutilisation du traitement Isoler le traitement aussi bien du métier que des composants graphiques Implémentation Implémentation d’une interface XXXXListener Extension d’une classe XXXXAdapter Un Adapter est une classe qui implémente tous les méthodes d’une interface xxxlistener en comptant plusieurs 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Exemple dans une classe dédiée public class MyExternalListener implements ActionListener { int count; ExternalListener frame; public MyExternalListener (ExternalListener parent) { this.frame = parent; this.count = 0; } public void actionPerformed(ActionEvent e) { frame.setLabel("Click "+ (++count)); Classe externe public class ExternalListener extends Frame { public ExternalListener() { . . . listener = new MyExternalListener(this); button1 = new java.awt.Button(); button1.setLabel("Click me!"); button1.addActionListener(listener); add(button1, java.awt.BorderLayout.CENTER); … } public void setLabel (String text) { label1.setText(text); } private MyExternalListener listener; L’interface utilisateur MyExternalListener. actionPerformed() Les 3 implémentations sur le convertisseur 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Exercice Développer une interface contenant un champ texte et un bouton. A chaque clique sur le bouton, celui-ci doit afficher le texte afficher le texte écrit sur le champ texte Utiliser un listener dans une classe dédiée 23/05/2019

Exercice Implémenter un convertisseur °C  °F en utilisant des composants AWT Varier les options de listener Utiliser une listener dans une classe interne Utiliser une classe anonyme Utiliser une classe dédiée 23/05/2019

Gestionnaires de placement Interface java.awt.LayoutManager Objectif : Gérer l’emplacement des composants dans un container Positionner les composants d’interface graphique Calcul automatique de la position En cas de redimensionnement, le repositionnement des composants est automatique Pas besoin d’affecter des positions précises aux composants 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Gestionnaires de placement Chaque container possède un LayoutManager Méthode setLayout(LayoutManager) de Container Différents implémentations, dont FlowLayout : présentation en ligne BorderLayout : présentation en blocs nord, sud… CardLayout : présentation en pile GridLayout : présentation en grille GridBagLayout: présentation en grille composite … 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr FlowLayout Le plus simple Organisation dans une ligne Gauche  droite, droite  gauche Centralisée ou pas resize 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Exemple FlowLayout centralisé Définition des espaces entre les composants : Espace horizontal (hgap) Espace vertical (vgap) Un Frame avec 5 buttons 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Exemple Taille du Frame calculé en fonction de taille de l’écran 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr BorderLayout Layout par défaut On choisit dans que région le composant est attachée CENTER, NORTH, SOUTH, EAST, WEST Layout composé par de sous-panels Source : Core Java  23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Exemple Chaque composant est attaché à une zone 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr GridLayout Organisation des composants en lignes et colonnes Grille rectangulaire composé par des cellules identiques Remplissage droite  gauche ou droite  gauche selon propriété ComponentOrientation du container Composants avec une taille identique 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Exemple Resize garde la grille Grille de 2 lignes et 3 colonnes Composants disposés automatiquement 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr GridBagLayout Disposition des composants également en lignes et colonnes Cellules de taille variable Composants peuvent s’étendre sur plusieurs cellules Définition des contraintes (GridBagConstraints) Chaque composant est associé à un GridBagConstraints Les contraintes définissent le positionnement du composant 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Exemple Cellules de la grille ont une taille variable Position et comportement lors du resize par composant 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr GridBagConstraints Différentes contraintes sont possibles Emplacement dans la grille : gridx (colonne), gridy (ligne) c.gridx = 1; c.gridy = 0; //2nd colonne, 1er ligne Remplissage des cellules adjacentes : gridwidth (n° de colonnes occupées) gridheight (n° de lignes occupées) c.gridwidth = 3; c.gridwidth = GridBagConstraints.REMAINDER; //dernier de la col. c.gridheight = GridBagConstraints.RELATIVE; //après le dernier Remplissage d’une zone (fill): NONE (aucun), HORIZONTAL, VERTICAL, BOTH c.fill = GridBagConstraints.HORIZONTAL; 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr GridBagConstraints Remplissage interne : ipadx (horizontal), ipady (vertical) c.ipady = 40; //composant haut Poids : weightx (0 si la colonne doit garder sa taille) weighty (0 si la ligne doit garde sa taille) c.weightx = 0.0; c.weightx = 100; Situation du composant dans la zone (anchor) CENTER, NORTH, NORTHEAST, EAST, PAGE_END… c.anchor = GridBagConstraints.PAGE_END; 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Exemple 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Exercice Utiliser différents gestionnaires des layouts avec le convertisseur °C  °F FlowLayout BorderLayout GridLayout 23/05/2019

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Swing Développé en collaboration avec Netscape Fondé sur AWT Même mode de traitement des événements Implémentation Java, non native Peu de dépendances par rapport à la plateforme Implémentation basée sur le modèle MVC Look & Feel configurable Ensemble de composants étendu 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Swing Organisation similaire à AWT Notion de composant (JComponent) et de container (JFrame) Package javax.swing.* Composants se nomment J*  java.awt.Frame javax.swing.Jframe  23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Hiérarchie Swing Source : C.S. Lindsey, “JavaTech: An Introduction to Scientific and Technical Computing with Java” http://www.particle.kth.se/~lindsey/JavaCourse/Book/Part1/Java/Chapter06/swing.html 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr AWT x Swing 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr AWT x Swing 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Quelques composants Composants : JButton JTextArea JMenu JTable JProgressBar Containers : JFrame JPanel JScrollPane 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Création d’un menu… Collaboration entre 3 éléments : MenuBar, Menu et MenuItem Association à des raccourcis clavier Production d’ActionEvents 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Autres composants… 23/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Exercice Ecrire une nouvelle interface en Swing pour le convertisseur de température 23/05/2019

Exercice Ecrire une interface en Swing pour remplir la fiche d’un employé (classe Employee). 23/05/2019