Retour sur MVC. Introduction aux IHM et à la réflexivité Java Vos premiers pas en Swing.

Slides:



Advertisements
Présentations similaires
Réaliser en Java un programme client d’une Base de Données
Advertisements

A l’issue des conseils de classe de 3ème,
Licence pro MPCQ : Cours
Conception d’IHM en Java
Conception d’IHM en Java
Les Interfaces Graphiques
Gestion des événements (suite)
Audrey Occello Cédric Joffroy Anne-Marie Dery
J'ADE 2005 J’aide Au Développement des Evaluations Animateurs TICE
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
1. 2 Informations nécessaires à la création dun intervenant 1.Sa désignation –Son identité, ses coordonnées, son statut 2.Sa situation administrative.
Guide rapide pour le gestionnaire Etape
Gestionnaires de géométrie
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.
Les Interfaces graphiques Les Swing. Les interfaces graphiques: Introduction Une application est une boîte noire. Prend des entrées et produit des sorties.
Lexique des manœuvres de base pour utiliser à PowerPoint
Vos premiers pas en Swing
Vos premiers pas en Swing
POO / IHM Architecture Logicielle
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.
PRÉSENTATION Logiciel de traitement de texte:
Développement d’applications web
Page 1 Introduction à ATEasy 3.0 Page 2 Quest ce quATEasy 3.0? n Ensemble de développement très simple demploi n Conçu pour développer des bancs de test.
Interagir avec un objet mixte Propriétés physiques et numériques Céline Coutrix, Laurence Nigay Équipe Ingénierie de lInteraction Homme-Machine (IIHM)
1 Cours numéro 3 Graphes et informatique Définitions Exemple de modélisation Utilisation de ce document strictement réservée aux étudiants de l IFSIC.
Écouteurs de click d'une fenêtre
LE Sudoku Projet Parcours GSI
Création d’un programme :
18/05/ Utiliser le cahier de texte en ligne avec lapplication SPIP Adresse du site du lycée :
Création d'un diaporama Création d'un diaporama
Projet poker 1/56. Introduction Présentation de léquipe Cadre du projet Enjeux Choix du sujet 2.
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
Graphical User Interface (GUI)
2 TP avec l ’aide d ’un modeleur 3D :
Représentation des systèmes dynamiques dans l’espace d’état
Représentation des systèmes dynamiques dans l’espace d’état
Représentation des systèmes dynamiques dans l’espace d’état
1. 2 PLAN DE LA PRÉSENTATION - SECTION 1 : Code HTML - SECTION 2.1. : CSS (Méthode 1) - SECTION 2.2. : CSS (Méthode 2) - SECTION 3 : JavaScript - SECTION.
Formation Développeur Java Applet et interfaces graphiques avec AWT
TYPES DE COMPOSANTES SWING Cours 420-B43. On peut distinguer 3 Niveaux 3 niveaux Haut niveau : toute application graphique doit comprendre au moins une.
Équipe 2626 Octobre 2011 Jean Lavoie ing. M.Sc.A.
LA GESTION COLLABORATIVE DE PROJETS Grâce aux outils du Web /03/2011 Académie de Créteil - Nadine DUDRAGNE 1.
Création et présentation d’un tableau avec Word 2007
APPLETS. Applets : généralités Applet : application s'exécutant dans une page HTML Le ByteCode (fichiers.class) est téléchargé depuis un serveur. L'exécution.
1 Formation à l’usage éco-performant de votre pc 1 ère Partie.
Introduction à l’informatique en gestion 1 Plan de la leçon Compagnon office Sections et Mise en page En-têtes et pieds de page Notes de bas.
Plan de la leçon Réf. p. WRD- 149 Les styles Les listes hiérarchiques
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.
14 La gestion d’événements
Interface graphique PO2 ( ) Chapitre 3 Gestionnaires géométrie.
La liste des tâches  Un moyen commode pour accéder directement et facilement aux tâches programmées pour l’utilisateur et le praticien en cours d’utilisation.
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
Conception des pages Web avec
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.
Scénario Les scénarios permettent de modifier la position, taille … des calques au cours du temps. Son fonctionnement est très proche de celui de Macromedia.
DreamWeaver Séance 2 HMIDA Ahmed A2008. Plan 1.Calques 2.CSS 3.Modèles 4.Formulaires 5.Comportements 6.Mise en ligne.
Exposé DREAMWEAVER 2 Guillaume DUBREUIL Adrien HADOUX.
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.
Dreamweaver 2 Plan 1.Calques 2.CSS 3.Modèles 4.Comportements 5.Formulaires 6.Mise en ligne 1 Timothée Devaux Myriam Roudy Dreamweaver 2 Printemps 2008.
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.
DREAMWEAVER Séance 2 SI28 – P06 Nolwenn PICHAUD.
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
FACTORY systemes Module 2 Section 1 Page 2-3 Installation d’Industrial SQL FORMATION InSQL 7.0.
Java Swing. Principes de base  Des composants graphiques (exemple: JFrame, JButton …)  Hiérarchie de classes  Des événements et les actions à effectuer.
Transcription de la présentation:

Introduction aux IHM et à la réflexivité Java Vos premiers pas en Swing

Retour sur MVC

Rappel sur le patron MVC MVC pour Modèle-Vue-Contrôleur permet de séparer les données (M), l’interface homme-machine (V) et la logique de contrôle (C) Impose une séparation en 3 couches : M : représente les données de l’application. Définit interaction avec la base de données et le traitement des données V : représente l’interface utilisateur. Effectue aucun traitement, ne fait que l’affichage des données (fournies par M). Possibilité d’avoir plusieurs vues pour un même M C : gère l’interface entre le modèle et le client. Interprète la requête de ce dernier pour lui envoyer la vue correspondante. Effectue la synchronisation entre le modèle et les vues 3

L’exemple du login 2 vues parmi d’autres IHM en Anglais IHM en français

Un modèle 3 variables d’instances Des méthodes log, password, check logCheck passwordCheck connect

Cas d’interaction Cas no 1 le bouton Log in implique la vérification login et password à partir des données saisies. Les données peuvent être modifiées jusqu’au moment de l’utilisation du bouton Action : connexion ou un message d’erreur

Cas d’interaction Cas no 2 le bouton Log in implique la vérification login password à partir des données saisies. Les données peuvent être modifiées jusqu’au moment de leur validation par un retour charriot Actions : connexion ou un message d’erreur Les champs de saisie sont bloqués après retour charriot

Cas d’interaction Cas no 3 : La saisie des données est validée au premier retour chariot Actions : vérification des données faite au fur et à mesure pour le login puis pour le password ce qui peut entrainer un message d’erreur connexion au moment par click sur le bouton

Questions Avez-vous d’autres exemples d’interactions ? Un autre modèle pourrait-il être implémenté ? Avez-vous d’autres exemples d’IHM (Vues) ? Quelle est la différence entre vue et interaction ? Quid de IHM ?

Questions Plusieurs IHM (Vues) peuvent elles interagir de la même façon ? Plusieurs IHM (Vues) peuvent elles interagir différemment ? Peut on changer la façon d’interagir sans modifier une vue (ou le modèle) ? Peut on changer de modèle sans modifier la vue (ou le modèle) ?

Cas d’interaction no 1 Le Modèle Contrôleur no 1 IHM Anglais IHM français Contrôleur no 1

Notifications Où placer les notifications et lesquelles ? dans le modèle? dans la vue ? dans le contrôleur ? 12

Notifications Où gérer les événements et lesquels ? dans le modèle? dans la vue ? dans le contrôleur ? 13

Cas d’interaction no 2 Le Modèle IHM Anglais IHM français Contrôleur no 2

Notifications Où placer les notifications et lesquelles ? dans le modèle? dans la vue ? dans le contrôleur ? 15

Notifications Où gérer les événements et lesquels ? dans le modèle? dans la vue ? dans le contrôleur ? 16

Cas d’interaction no 3 Le Modèle Contrôleur no 3 IHM Anglais IHM français Contrôleur no 3

Notifications Où placer les notifications et lesquelles ? dans le modèle? dans la vue ? dans le contrôleur ? 18

Notifications Où gérer les événements et lesquels ? dans le modèle? dans la vue ? dans le contrôleur ? 19

JDIALOG : CLASSES et BOÎTES DE DIALOGUES Il existe différentes classes pour créer des boîtes de dialogue : JOptionPane : pour créer des boîtes de dialogue standards JColorChooser : pour choisir une couleur JFileChooser : pour permettre de sélectionner un fichier ProgressMonitor : pour afficher la progression d’une opération 20

JOPTIONPANE Permet de créer des boîtes de dialogue standards Permet de faire des avertissements Possède des éléments standardisés : Réponse oui/non, Icônes de danger, d’erreurs, … Est modifiable (boutons, icônes, …) avertissement erreur information 22 question

JCOLORCHOOSER Permet de créer une boîte de dialogue pour choisir une couleur Possède différents onglets correspond aux différents types d’encodage de couleurs 23

JFILECHOOSER Définit une boîte de dialogue pour permettre sélectionner un fichier Possède des boîtes de dialogue par défaut : Pour l’ouverture (showOpenDialog), Pour la sauvegarde (showSaveDialog) 24

APPLET JAVA ÉTEND APPLET OU JAPPLET S’exécute dans une machine virtuelle (celle du navigateur web) et nécessite un fichier html N’a pas de fonction main mais vit un cycle (run) Les principales méthodes sont : init () : quand la page html est chargée la 1ère fois start () : après init et chaque fois que l’on revient sur la page stop () : quand on quitte la page html (on interrompt les méthodes lancées dans start) destroy () : quand l’applet est terminée (on libère toutes les ressources) 25

EXEMPLE D’APPLET : CODE JAVA import java.awt.*; Import java.applet.*; public class HelloWorldApplet extends Applet { Font f = new Font ( « Serif », Font.BOLD, 36); public void paint (Graphics g) { g.setFont(f); g.setColor(Color.red); g.drawString(getParameter (« Chaine »), 10, 30); } <HTML> <TITLE> Applet HelloWorldApplet </TITLE> <APPLET CODE=« HelloWorldApplet.class » WIDTH=200 HEIGHT=300> <PARAM NAME=« Chaine » value = « Hello World »> </APPLET> </HTML> 26

SÉCURITÉ ET APPLET Une applet ne peut pas charger de librairies ou utiliser des méthodes natives Elle ne peut normalement pas lire ou écrire dans des fichiers de l’hôte sur lequel elle s’exécute Elle ne peut pas effectuer de connexions réseaux sauf sur l’hôte dont elle provient Elle ne peut lancer aucun programme de l’hôte sur lequel elle s’exécute 27 Ces restrictions peuvent être levées par un certificat de sécurité (cf. jarsigner, policytool)

TYPES DE PANNEAUX Pour structurer les différents éléments graphiques, on utilise des containers qui font partis de la famille des panneaux. On retrouve : Le JPanel : panneau de base, Le JScrollPane : qui permet d’obtenir des ascenseurs Le JSplitPane : qui permet de diviser en 2 (seulement 2) Le JTabbedPane : qui permet d’avoir différents onglets pour les différents sous-contenus 28

La famille des panneaux 29

JPANEL Le container le plus utilisé pour structurer l’interface Ne possède pas de réelles contraintes (la gestion de l’organisation des éléments est déléguée à un Layout) Peut contenir des sous-panneaux 30

JSCROLLPANE Permet d’obtenir des ascenseurs de manière automatique, Est créé en lui associant le composant que l’on souhaite pouvoir scroller Le composant inclus dans le JScrollPane doit implémenter l’interface Scrollable Quelques éléments qui implémentent cette interface : JTextField, JTextArea, JTree, JTable 31

JSPLITPANE Permet de diviser en deux l’espace zone Peut se construire avec les deux composants contenus dans chacune des zones Possède une orientation (HORIZONTAL_SPLIT ou VERTICAL_SPLIT) 32

JTABBEDPANE Permet d’avoir des onglets Permet de mieux gérer l’espace de travail Chaque onglet est créé avec son panel associé L’onglet peut posséder une icône en plus ainsi qu’un raccourci clavier (Mnemonic) Peut-être fait de manière équivalente avec un CardLayout (à ce moment, il n’y a pas d’onglet) 33

Afficheurs 34

COMMENT POSITIONNER LES COMPOSANTS ? 35

DEUX MANIÈRES Positionner de manière absolue, revient à : Retirer tout gestionnaire d’affichage (setLayout(null)) Placer un par un les éléments en leur donnant leur position dans la fenêtre (méthode setBounds) Positionner en utilisant des gestionnaires d’affichage 36

MISE EN PAGE DES COMPOSANTS La mise en page des éléments s’effectue à l’aide d’un gestionnaire d’affichage (Layout), Tous les containers possèdent une méthode setLayout qui permet de spécifier le type de gestionnaire d’affichage On peut ajouter des contraintes lorsqu’on ajoute un composant 37

LES DIFFÉRENTS TYPE DE LAYOUT BorderLayout, GridLayout, FlowLayout, CardLayout, BoxLayout, GridBagLayout 38

UTILISATION D’UN LAYOUT Création du layout Exemple : BorderLayout bl = new BorderLayout()) 2. Association au container : panel.setLayout(bl) Ajout de composants au container, avec ou sans contrainte panel.add(button, BorderLayout. EAST) 39

BORDERLAYOUT Définit des zones dans lesquelles ajouter des éléments Intéressant pour le panneau principal 40

GRIDLAYOUT Définit une grille où ajouter les composants L’ajout des composants se fait sans préciser de contraintes On déclare le layout de la manière suivante : new GridLayout(0,2) // row, column 0 signifie autant qu’on veut 41

FLOWLAYOUT On ajoute au fur et à mesure les composants, si cela ne tient pas dans la ligne, on commence une nouvelle ligne Gestionnaire d’affichage par défaut des JPanel Possibilité de spécifier l’alignement 42

CARDLAYOUT Permet d’empiler des composants (suivant des panneaux) http://java.sun.com/docs/books/tutorial/uiswing/layout/card.html CARDLAYOUT Permet d’empiler des composants (suivant des panneaux) Le dernier ajouté ou celui spécifié est visible Concept de la pile de cartes 43

BOXLAYOUT Définit une boîte dans laquelle seront ajoutés les différents composants Cette boîte peut-être : Horizontale : X_AXIS Verticale : Y_AXIS On ajoute les éléments au fur et à mesure 44

GRIDBAGLAYOUT (1/2) Gestionnaire d’affichage relativement compliqué à mettre en place Demande de définir toutes les contraintes des différents composants à placer Place les composants au-travers une grille modulaire 45

GRIDBAGLAYOUT (2/2) 46

SYNTHESE

Hiérarchie Swing

Aperçu de Swing http://download.instantiations.com/DesignerDoc/integration/latest/docs/html/palettes/ swing_palettes.html Arch

Aperçu de Swing Les Containers Ont un LayoutManager –add / remove d’un Component –Unicité de lieu –Indice des components Méthodes à connaître •repaint() ! validate() ! •setEnabled(true / false) : activé / désactivé •(Rectangle) getBounds / setBounds(x,y, w, h) : positionne et dimensionne •getWidth() : largeur / getHeight() : hauteur •getX() et getY() : obtenir une coordonnée •setVisible(true / false) •getBackground et setBackground [objet Color, définition RGB]

Aperçu de Swing Des composants JComponent Hérite de Container Méthodes de commodité getSize retourne une Dimension setSize : une Dimension ou deux entiers –Une position •getLocation retourne un Point •setLocation avec un Point ou deux entiers –Coordonnées •Origine au coin supérieur gauche •x (width) vers la droite et y (height) vers le bas –Méthode public void paint(Graphicsg) –setPreferredSize –setDoubleBuffered(true/false) / isDoubleBuffered() –setOpaque(true / false) •Dessin à l’écran : paint appelle –paintComponent –paintBorder –paintChildren Les boutons –JButton /JToggleButton / JCheckBox / JRadioButton –java.awt.ButtonGroup (méthode add) Les champs textuels –JTextField/ JTextArea Etc…

Aperçu de Swing et aussi… Les îcones : javax.swing.ImageIcon créer avec le nom d’un fichier image par exemple Menus : les JMenuBar, JMenu, JMenuItem Les Layout :Basé sur PreferredSize ou une maximisation de l’élément •BorderLayout –par défaut dans une fenêtre –ajout en précisant la zone –add("North", comp) •FlowLayout : en ligne •GridLayout : en tableau •GridBagLayout : avec des contraintes •etc.

Exemple de code

EXEMPLE D’APPLICATION JAVA SWING JFrame frame = new JFrame("TopLevelDemo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Create the menu bar. Make it have a green background. JMenuBar greenMenuBar = new JMenuBar(); greenMenuBar.setOpaque(true); /RVB greenMenuBar.setBackground(new Color(154, 165, 127)); greenMenuBar.setPreferredSize(new Dimension(200, 20)); //Create a yellow label to put in the content pane. JLabel yellowLabel = new JLabel(); yellowLabel.setOpaque(true); yellowLabel.setBackground(new Color(248, 213, 131)); yellowLabel.setPreferredSize(new Dimension(200, 180)); //Set the menu bar and add the label to the content pane. frame.setJMenuBar(greenMenuBar); frame.getContentPane().add(yellowLabel,BorderLayout.CENTER); 54