Modèle/Vue/Contrôleur



Documents pareils
Interfaces graphiques avec l API Swing

Développement Logiciel

Cours 2 : programmation des interfaces graphiques

Le langage JAVA G. Baulieu Institut de Physique Nucléaire de Lyon Septembre 2009

Java 7 Les fondamentaux du langage Java

Programmation Orientée Objet

JAVA 8. JAVA 8 - Les fondamentaux du langage. Les fondamentaux du langage Java. Avec exercices pratiques et corrigés JAVA 8 29,90.

Introduction au langage Java

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

L Histoire de Java. «Portable» veut dire qu il peut tourner sur plusieurs systèmes d exploitations différents ; Windows, Linux

Construire des plug-ins pour SAS Management Console SAS 9.1

Sécurité Java 2. Première approche. Installation des exemples. Exemple d'une applet

Applications distribuées: le retour du client "riche"

AVEC LIVE TRADER, VISEZ PLUS HAUT POUR VOS INVESTISSEMENTS

Création d un service web avec NetBeans 5.5 et SJAS 9

SOMMAIRE. Présentation assistée sur ordinateur. Collège F.Rabelais 1/10

Programmation en Java IUT GEII (MC-II1) 1

Générer du code à partir d une description de haut niveau

Programmation en Java Interface graphique. NGUYEN Thi Minh Tuyen

RN2-Programmation Orientée Objet - JAVA CH 1 Introduction à la POO et Java

Rapport de stage. Reprise d'un programme Java, développement web et utilisation de CMS

Introduction à Expression Web 2

S T L - C P S - L e s p l u g i n s E c l i p s e. - Une Introduction , Frédéric Peschanski

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Outils, langage et approche Android Une introduction. Nicolas Stouls lyon.fr

Java Licence professionnelle CISII,

INCORPORER EXCEL EN LIGNE DANS UN FICHIER CRÉÉ AVEC L ÉDITEUR DE TEXTE 15 avril 2015

Enregistrement de votre Géorando Maxi Liberté

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Création d un formulaire de contact Procédure

Introduction à Eclipse

Contre exemple de présentation

Gestionnaire d emploi du temps

Optimiser pour les appareils mobiles

Tutoriel de démarrage rapide destiné aux EDITEURS

Auto-évaluation Programmation en Java

AUVRAY Clément (168187) HOMBERGER Alexandre (186897) GLADE. Langages, outils et méthodes pour la programmation avancée Page 1 sur 12

Utilisation de l outil lié à MBKSTR 9

ActoPalm 1.0 b. Logiciel d'aide au relevé d'observation in situ sur Organiseurs PalmOS Compatibles. Alain Kerguelen, mai 2002

RapidMiner. Data Mining. 1 Introduction. 2 Prise en main. Master Maths Finances 2010/ Présentation. 1.2 Ressources

Bases Java - Eclipse / Netbeans

GIMP. Le traitement d'images libre INSTALLATION SUR WINDOWS

DECOUVERTE DU LOGICIEL CIEL GESTION COMMERCIALE

Internet Marketing Manager

Silhouette Studio Leçon N 2

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

Flex. Lire les données de manière contrôlée. Programmation Flex 4 Aurélien VANNIEUWENHUYZE

EPIJEUX-WIN POUR MATERNELLE ET ELEMENTAIRE AUTEUR : JEAN-FRANÇOIS LUCAS. Documentation. «Labypro»

Table des matières Introduction Démarrage Les composants graphiques... 26

Évaluation des compétences. Identification du contenu des évaluations. Septembre 2014

BIRT (Business Intelligence and Reporting Tools)

Cours 1: Java et les objets

Présentation des PowerToy pour Windows XP

Malgré son aspect spartiate, Freeplane offre de nombreuses fonctionnalités en particulier dans le domaine de la diffusion des cartes sur le Web.

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Desktop Intégration. Rémi Forax

Découverte du logiciel ordinateur TI-n spire / TI-n spire CAS

26 Centre de Sécurité et de

Spécifications techniques

PAGE 1. L écran du logiciel d Open Office Draw. Barre de menu: Les commandes du logiciel

Guide de l utilisateur. Faites connaissance avec la nouvelle plateforme interactive de

Cours. Cours 8 : Révisions. Importance. Interface homme-machine

Logiciel de gestion de caisse et d ardoises

dmp.gouv.fr Pour en savoir plus DMP Info Service : 24h/24 7j/7

Comment réaliser une capture d écran dans Word. Alors comment ouvrir une page Word?

Projet de développement

1 Création d une pièce. 2 Travail complémentaire. 1-1 Réglage des barres d outils. 1-2 Exemples de réalisation de pièces à l aide d un modeleur 3D

KIELA CONSULTING. Microsoft Office Open Office Windows - Internet. Formation sur mesure

Réalisation de cartes vectorielles avec Word

ACCUEIL / Introduction. Introduction. Présentation de StarBoard Software Éléments de l écran Guide de démarrage rapide

PRISE EN MAIN D UN TABLEUR. Version OPEN OFFICE

Application de lecture de carte SESAM-Vitale Jeebop

Travaux pratiques avec RapidMiner

Tapez le titre de la page «BASTIA ville méditerranéenne», puis allez deux fois à la ligne à l aide de la touche Entrée.

Dans l idéal, ceci devrait être fait en amont pour chaque image envoyée sur l espace de stockage de votre site internet.

AGASC / BUREAU INFORMATION JEUNESSE Saint Laurent du Var Tel : bij@agasc.fr Word: Les tableaux.

Cahier Technique. «Développer une application intranet pour la gestion des stages des étudiants» Antonin AILLET. Remi DEVES

CALC2QIF Conversion de données OpenOffice au format QIF

Dans l Unité 3, nous avons parlé de la

LOG4430 : Architecture logicielle et conception avancée

@telier d'initiation

Maîtriser les fonctionnalités d un traitement de texte (Word OpenOffice)

GUIDE D UTILISATION DU BACKOFFICE

OOo4Kids, la suite OpenOffice adaptée aux enfants

Solutions du chapitre 4

Freeway 7. Nouvelles fonctionnalités

Pas-à-pas. Créer une newsletter avec Outlook

TP SIN Programmation sur androïde Support : eclipse

Tutorial pour une application simple

COMMENCER AVEC VUE. Chapitre 1

Installation de Microsoft Office Version 2.1

Securexam Consignes pour l EFU Les 2, 3 et 4 juin 2015

Tutoriel QSOS. Version /02/2013

HTTP Commander. Table des matières. 1-Présentation de HTTP Commander

Java - la plateforme

Utilisation du client de messagerie Thunderbird

Utilisation de la plateforme VIA ecollaboration

Accès au Serveur de PAIE «SPV» par INTERNET Paramétrage du poste de travail «Windows»

GUIDE D UTILISATION. [Réunions en ligne] [Conférences téléphoniques] [Conférences vidéo]

Transcription:

Modèle/Vue/Contrôleur Frederic.Mallet@unice.fr http://deptinfo.unice.fr/~fmallet/java/ 1

Interfaces graphiques Séparation du modèle et de la vue Changer, dynamiquement ou non, le «look&feel» ou le thème Windows, MacOS, Motif, Java/Metal, Décomposer la complexité Se concentrer sur la fonctionnalité L aspect est secondaire : + ou - simple, avec ou sans RAD Gestion de vues multiples HTML, WML, Swing, XML, 2

Exemple Plusieurs vues Joseph Bergin : http://csis.pace.edu/~bergin/ 3

MVC - Bref historique Introduit par Trygve Reenskaug, 70s Xerox Parc, environnement SmallTalk-80 Depuis, plusieurs adaptations et interprétations Dont MVP : Modèle/Vue/Présentation Modèle Mémorise l état courant (d une partie) de l application Vue Affiche l état courant du modèle Contrôleur/Présentation Définit quand et comment le modèle et la vue sont modifiés 4

PAC : Un autre modèle d agent [Coutaz 88] Trois facettes : Présentation (C + V de MVC) Abstraction (M de MVC) Contrôle : communication entre agent et liaison entre A et P Hiérarchisation : MVC ne définit de hiérarchie, ni les relations entre plusieurs agents MVC! Arbre : relation père-fils Heuristique de conception Communication par message 5

PAC et MVC : vue multiple A C C V1 C P C P M V2 6

MVC - Fonctionnement Notifie les vues ou le contrôleur Modèle État courant Notifie les changements Modifie l état Vue Dessine le modèle Sélectionne Contrôleur Traduit les interactions en actions sur le modèle S intègre au framework graphique : e.g. Swing 7

Le contrôleur Doit s'intégrer à l'environnement graphique sélectionné : framework AWT : Ancien système graphique de Java Swing : Nouveau système graphique de Java SWT : Framework graphique de Eclipse (IBM) J2ME : classes pour les téléphones ou les PDA Il faut donc connaître ce framework Connaître les classes principales Connaître les mécanismes d'extensions prévus C'est un travail long et fastidieux 8

L'environnement graphique de Java A l'origine : AWT (paquetage java.awt) Un paquetage est un ensemble de classes regroupées autour du même thème Swing a été rajouté : JDK 1.1 (javax.swing) Moins gourmand en mémoire Plus modulaire (basé sur MVC) Le composant graphique le plus simple est représenté par la classe java.awt.component Le composant graphique swing le plus simple : javax.swing.jcomponent qui hérite de java.awt.component 9

java.awt.component Définit un élément graphique Une dimension Accesseur: Dimension getsize() Modificateurs: void setsize(dimension) ou void setsize(int,int) Une position Accesseur: java.awt.point getlocation() Modificateurs: void setlocation(java.awt.point) ou void setlocation(int, int) Dessiner le contenu void paint(java.awt.graphics g) 10

java.awt.graphics Contexte graphique («morceau d écran») Permet de dessiner Changer de crayon : void setcolor(color) drawrect, drawoval, drawpolygon, drawstring, fillrect, filloval drawimage(img, x, y, ImageObserver) Obtenu automatiquement (repaint(), redimensionnement, etc.) 11

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] 12

javax.swing.jcomponent Hérite de Container Méthodes de commodité setpreferredsize setdoublebuffered(true/false) / isdoublebuffered() setopaque(true / false) Dessin à l écran : paint appel paintcomponent paintborder paintchildren 13

Hiérarchie partielle 14

Petites listes des JComponents Les boutons JButton /JToggleButton / JCheckBox / JRadioButton java.awt.buttongroup (méthode add) Les icones : javax.swing.imageicon créée avec le nom d un fichier image par exemple Les champs textuels JTextField/ JTextArea Menus : les JMenuBar, JMenu, JMenuItem Etc http://docs.oracle.com/javase/tutorial/uiswing/ 15

Les fenêtres graphiques : JFrame Barre de titre Barre de menu Panneau de contenu (contentpane : Container) Les fenêtres sont des JWindow Les JFrame sont des (hérite de) JWindow avec Un titre, un menu (éventuel), un contenu Le contentpane est un Container contient des composants graphiques (java.awt.component) JFrame fen = new JFrame("fenetre"); fen.getcontentpane().add(new JButton("Ok")); 16

JFrame : quelques méthodes setvisible(boolean b) Cache ou fait apparaître une fenêtre settitle(string title) Modifie le titre de la fenêtre setsize(int width, int height) Modifie la taille de la fenêtre pack () Choisit la taille préférée en fonction du contenu 17

Positionnement dans un containers Ils peuvent contenir plusieurs composants Mais avec quelle disposition? Il délègue le travail à un LayoutManager null : les composants sont positionnés par un système de coordonnées setbounds(10, 20, 100,200); FlowLayout : les composants ont leur taille préférée et sont disposés dans l'ordre d'ajout BorderLayout : Nord, Sud, Est, Ouest, Centre GridLayout : forme tabulaire ligne x colonne La méthode setlayout permet de choisir Par défaut, contentpane utilise BorderLayout 18

java.awt.borderlayout JFrame fen = new JFrame(); Container cp = fen.getcontentpane(); cp.add(new JButton("1"), "Center") ; cp.add(new JButton("2"), "North") ; cp.add(new JButton("3"), "South") ; cp.add(new JButton("4"), "East") ; cp.add(new JButton("555"), "West") ; fen.setvisible(true); North et South ont leur hauteur préférée East et West ont leur largeur préférée Center remplit le reste 19

java.awt.gridlayout JFrame fen = new JFrame(); Container cp = fen.getcontentpane(); cp.setlayout(new GridLayout(2,3)); cp.add(new JButton("1")) ; cp.add(new JButton("2")) ; cp.add(new JButton("3")) ; cp.add(new JButton("4")) ; cp.add(new JButton("555")) ; fen.setvisible(true); Toutes les cellules ont la même taille Cette taille dépend de la taille du Container 20

java.awt.flowlayout JFrame fen = new JFrame(); Container cp = fen.getcontentpane(); cp.setlayout(new FlowLayout()); cp.add(new JButton("1")) ; cp.add(new JButton("2")) ; cp.add(new JButton("3")) ; cp.add(new JButton("4")) ; cp.add(new JButton("555")) ; fen.setvisible(true); Toutes les cellules ont leur taille préférée 21

Capter les évènements javax.swing java.awt.event * écouteurs * Lorsqu'on clique sur un bouton Il notifie ses écouteurs (de type ActionListener) Pour devenir un écouteur Il faut s'enregistrer (addactionlistener) Il faut implémenter l'interface ActionListener Le même écouteur peut écouter différents boutons 22

Exemple d'écouteur : CacheFrame ActionListener Un écouteur qui ferme une fenêtre import javax.swing.jframe; import java.awt.event.*; class CacheFrame implements ActionListener { private JFrame fenetre ; CacheFrame(JFrame f) { this.fenetre = f; } public void actionperformed(actionevent ae) { this.fenetre.setvisible(false); } } 23

Enregistrer l'écouteur JFrame f = new JFrame(); CacheFrame ecouteur = new CacheFrame(f); JButton cb = new JButton("Cliquez-moi"); f.getcontentpane().add(cb); cb.addactionlistener(ecouteur); f.setvisible(true); Lorsqu'on clique sur cb Il notifie ses écouteurs enregistrés : ici ecouteur C'est-à-dire, il exécute leur méthode actionperformed Ici, cette méthode cache la fenêtre : fenetre.setvisible(false) 24