Plan. Les interfaces graphiques en Java



Documents pareils
Interfaces graphiques avec l API Swing

Java 7 Les fondamentaux du langage Java

Programmation en Java Interface graphique. NGUYEN Thi Minh Tuyen

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

Programmation Orientée Objet

Cours 2 : programmation des interfaces graphiques

Développement Logiciel

AVEC LIVE TRADER, VISEZ PLUS HAUT POUR VOS INVESTISSEMENTS

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

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

Correction des Travaux Pratiques Organiser son espace de travail

Introduction à Expression Web 2

Avant-propos FICHES PRATIQUES EXERCICES DE PRISE EN MAIN CAS PRATIQUES

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

Introduction au langage Java

Paramètres d accessibilité des systèmes d exploitation Windows et Mac

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

L ORDINATEUR FACILE D ACCÈS!

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

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

Construire des plug-ins pour SAS Management Console SAS 9.1

Utilisation de l éditeur.

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Desktop Intégration. Rémi Forax

WINDOWS 8. Windows 8 se distingue par la présence de 2 interfaces complémentaires :

MAILING KOMPOZER... 2 CREEZ UNE PAGE... 2 FORMAT DE LA PAGE... 2 AJOUTER DU TEXTE SUR UNE PAGE... 4

Auto-évaluation Programmation en Java

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

Fiche Mémo : Options d accessibilité sous Windows et Internet Explorer 5

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Logiciel de gestion de caisse et d ardoises

FOXIT READER 6.0 Guide rapide. Table des matières... II Utilisation de Foxit Reader Lecture Travailler dans des documents PDF...

Inspiration 7.5. Brève description d Inspiration. Avantages d Inspiration. Inconvénients d Inspiration

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

Séminaire d information MIGRATION WINDOWS 7 ET OFFICE 2010

Formation > Développement > Internet > Réseaux > Matériel > Maintenance

GUIDE DE DÉMARRAGE. SitagriPro Infinite FINANCEAGRI. Un service. c o r p o r a t e

L espace de travail de Photoshop

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

Notes pour l utilisation d Expression Web

Création WEB avec DreamweaverMX

KompoZer. Composition du site : _ une page d'accueil : index.html. _ une page pour la théorie : theorie.html. _ une page pour les photos : photos.

Organiser le menu "Démarrer"

Antidote et vos logiciels

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

PRISE EN MAIN D UN TABLEUR. Version OPEN OFFICE

TUTORIEL IMPRESS. Ouvrir Impress cocher «présentation vierge», «suivant» cocher «écran», «suivant» cocher «standard», «créer»

Leçon n 4. Analyse graphique Techniques de construction de barres et styles de. Fenêtres d analyse graphique. Leçon n 4

Access 2007 FF Access FR FR Base

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

145A, avenue de Port Royal, Bonaventure (Québec) G0C 1E0 Sans frais :

Silhouette Studio Leçon N 2

Création d'une interface graphique

Les calques : techniques avancées

Réalisation de cartes vectorielles avec Word

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

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

Design patterns. Design patterns - définition. Design patterns - avantages

Optimiser pour les appareils mobiles

1 CRÉER UN TABLEAU. IADE Outils et Méthodes de gestion de l information

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

Comment insérer une image de fond?

Mode Opératoire Windows XP

Mon aide mémoire traitement de texte (Microsoft Word)

Volet de visualisation

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

Assistant d e tablissement de Tableaux

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

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

Créer une trace, obtenir son fichier gpx et sa carte Ou Afficher un fichier trace GPX

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

Connecter le lecteur réseau de Pro-Cardex 3 Vérifier la version du gestionnaire de base de données 5 Procéder à l installation 6

Support Web Administration et gestion des portails web des facultés - Université A.Mira Béjaia -

Premiers pas avec NetSupport SCHOOL

Thunderbird est facilement téléchargeable depuis le site officiel

Freeway 7. Nouvelles fonctionnalités

Comment sélectionner des sommets, des arêtes et des faces avec Blender?

La base de données XML exist. A. Belaïd

Utilisation du logiciel GALAAD

Stellar Phoenix Outlook PST Repair - Technical 5.0 Guide d'installation

VOCABULAIRE LIÉ AUX ORDINATEURS ET À INTERNET

26 Centre de Sécurité et de

MEMENTO D'UTILISATION Du T.N.I. SmartBoard (Version )

pcon.planner 6 Préparer et présenter une implantation en toute simplicité

Gestion des documents avec ALFRESCO

LES BIBLIOTHEQUES DE WINDOWS 7

Prise en main rapide

Publier dans la Base Documentaire

Eclipse atelier Java

COURS WINDEV NUMERO 3

COMMENCER AVEC VUE. Chapitre 1

Utilisation de l'outil «Open Office TEXTE»

iweb Premiers contacts Découvrez iweb et apprenez à créer votre site web.

Tutorial Terminal Server sous

Création d une SIGNATURE ANIMÉE avec PHOTOFILTRE 7

Publication Assistée par Ordinateur

Chapitre 1. Prise en main

Installation et utilisation du client FirstClass 11

1 INTRODUCTION. PowerBuilder - Introduction. Pascal Buguet Imprimé le 19 août 2004 Page 1

Document Technique. Création d une machine virtuelle

Transcription:

Plan Objectif : maitriser le développement d interfaces graphiques en Java connaissance des API AWT et Swing de composants graphiques gestion des événements et du comportement de ces composants apprentissage d une bonne pratique de structuration des applications (modèle MVC) Plan 1- rappels sur AWT, ses conteneurs, ses composants 2- Swing, ses containers, ses composants les plus simples 3- Les gestionnaires de géométrie en Java 4- Gestion des événements en Java 5- Le MVC : Modèle Vue Controleur 6- Le MVC dans Swing, JTree, JList, JTable Bibliographie : java.sun.com (API et tutoriaux) 1 Les interfaces graphiques en Java Les programmes à interfaces graphiques font usage des classes awt (package java.awt) et/ou swing (package javax.swing). Ces classes représentent des composants graphiques, graphiques en Java des conteneurs de composants, des utilitaires de placement des composants dans les conteneurs et des classes d interaction utilisant le modèle d événement Java 2

Généralités sur AWT (1/2) Historiquement, AWT (Abstract Window Toolkit) est la première API graphique de Java (version 1.0 du JDK). AWT utilise au maximum le système graphique sous-jacent, via la machine virtuelle Java qui fait appel au système graphique natif (MS windows, X Windows, Mac OS X,...). package java.awt; public class Button{... Composant Bouton de MS Windows 3 Généralités sur AWT (2/2) Avantages : l aspect et le comportement des applications graphiques est conforme à ceux des autres applications qui tournent sur le même OS l application bénéficie de l efficacité, en terme de rapidité, des composants graphiques natifs pas besoin de réimplémenter tout les composants ne permet de fournir que les composants graphiques disponibles pour toutes les plateformes impossibilité de garantir une uniformité des comportements et des apparences d une même application d un OS à l autre Inconvénients graphiques en Java : 4

Généralités sur Swing (1/2) Swing est une extension de AWT, et existe depuis le JDK 1.2. JFC (Java Fundation Classes) = Java2D + copier/coller entre applications + Swing Swing a adopté l approche inverse : faire le moins possible appel aux composants graphiques de l OS, et uniquement pour des opérations de base (ouvrir une fenêtre, dessiner une ligne ou du texte, gérer les événements). package graphiques java.awt; en Java public class JButton{... public void paint(){... dessin de lignes sous MS Windows 5 Généralités sur Swing (2/2) Avantages : Apparence et comportement indépendants des plateformes (Look and Feel) Possibilités d introduire de nouveaux composants pour toutes les plateformes (Swing est bien plus riche qu AWT) Inconvénients : Besoin de réimplémenter les composants existants dans les OS Les applications sont moins rapides (?) Les applications n ont pas forcément les mêmes apparences et comportements que les autres applications de l OS 6

Les classes AWT 7 Les conteneurs AWT Container classe générale qui regroupe des composants, responsable du layout Window conteneur pour interaction avec le système Frame fenêtre principale d'application Dialog fenêtre d interaction avec l utilisateur Panel graphiques conteneur en Java de base Applet pour exécution dans un navigateur (package applet) ScrollPane intègre un conteneur d'ascenseurs Component Container Window Frame Dialog FileDialog Panel applet.applet ScrollPane 8

ContainerTest Utilisation des containers ContainerTestBis public class ContainerTest extends Frame { public ContainerTest(){ super("containertest"); Panel p = new Panel(); p.setbackground(color.yellow); this.add(p); this.setsize(300,200); this.setvisible(true); p.getgraphics().drawstring("bonjour le monde!!", 50,50); public ContainerTestBis(){ super("containertestbis"); this.setbackground(color.yellow); this.setsize(300,200); this.setvisible(true); Dialog d = new Dialog(this,"Dialoguer avec moi",true); d.setsize(100,50); d.setresizable(false); d.setvisible(true); public void paint(graphics g){ g.drawstring("bonjour le monde!!", 50,50); 9 Applet Applet est un Panel spécialisé. Une instance de Applet est incorporée dans un conteneur pour exécution. Une instance de Applet n'est donc pas une application autonome. Elle peut être incluse dans une page Web. Elle récupère les paramètres de la balise <PARAM... du code HTML via la méthode getparameter(string) <APPLET [CODEBASE = url du répertoire] CODE = fichier de l'applette WIDTH = largeur du conteneur HEIGTH = sa hauteur [ALT = texte de remplacement] [ARCHIVE = fichiers archives] [NAME = nom de l'instance de l'applette ] [ALIGN = top, middle, left (dans la page)] [VSPACE = marges haute et basse] [HSPACE = marges gauche et droite] > [<PARAM NAME = nom VALUE = sa valeur>] [<... >] </APPLET> 10

Cycle de vie de Applet Une instance de Applet est active ou inactive : au chargement, inactive au premier affichage, devient active selon le contexte, devient inactive si elle sort de la partie visible de la page si une autre page est activée Méthodes de gestion init() création, inactive start() graphiques en Java mise en route, activation stop() arrêt, désactivation destroy() quand on quitte le programme. Une instance de Applet est exécutée dans un navigateur Web avec certaines restrictions (lecture/écriture/exécution sur le disque local, connection à d'autre machine que sa machine d'origine,...) 11 Les composants AWT (1/2) Canvas pour le dessin, Choices est un menu déroulant, CheckboxGroup composant logique de regroupement de cases à cocher, TextArea propose plusieurs lignes alors que TextField n en propose qu une Object Component Canvas TextComponent MenuBar Label Checkbox Button TextField Choice List TextField TextArea List Label Button Choice Scrollbar Checkbox CheckboxGroup 12

Les composants AWT (2/2) Comportements communs à tous les composants : activation/désactivation du composant (réaction ou non aux actions de l utilisateur) : setenabled(boolean) et isenabled() visibilité/invisibilité du composant : setvisible(boolean) et isvisible() font du composant : setfont(java.awt.font) apparence du curseur sur le composant : setcursor(java.awt.cursor) couleur de fond : setbackground(java.awt.color) couleur de travail : setforeground(java.awt.color) et bien d autres... 13 Les menus d AWT MenuComponent est abstraite, Menu est une sous-classe de MenuItem par le design pattern des conteneurs MenuBar mb = new MenuBar(); Menu m1 = new Menu("Languages"); Menu procedural = new Menu("Procedural"); procedural.add(new MenuItem("C")); procedural.add(new MenuItem("Pascal")); Menu objectoriented = new Menu("Object Oriented"); objectoriented.add(new MenuItem("Smalltalk")); objectoriented.add(new MenuItem("Java",new MenuShortcut(KeyEvent.VK_F10))); objectoriented.add(new MenuItem("Eiffel")); objectoriented.add(new MenuItem("C++")); Menu functional = new Menu("Functionnal"); functional.add(new MenuItem("Caml")); functional.add(new MenuItem("LISP")); m1.add(procedural); m1.add(objectoriented); m1.add(functional); mb.add(m1); this.setmenubar(mb); Object MenuComponent MenuBar MenuItem CheckboxMenuItem MenuTest Menu MenuShortcut PopupMenu 14

Les classes Swing (1/2) Les classes similaires à AWT réimplémentent les composants AWT ajoutent de nouveaux composants dérivés des composants AWT implémente le MVC (modèle, vue, contrôle) 15 Les classes Swing (2/2) Les classes nouvelles des types de Panel nouveaux pour davantage structurer les conteneurs des conteneurs particuliers bien utile (JToolBar, JProgressBar,...) des conteneurs généraux «lourds» : JFrame, JWindow, JApplet, JDialog 16

JFrame (1/2) Une JFrame est la classe de base pour une application graphique Une JFrame contient une instance de la classe JRootPane JApplet, JWindow et JDialog sont semblables. Le Root Pane contient deux conteneurs, glasspane (JPanel) et layeredpane (JLayeredPane) La layeredpane contient deux conteneurs, contentpane (Container) et menubar (null ou JMenuBar) On travaille dans contentpane par la méthode getcontentpane() 17 JFrame (2/2) Une JFrame n'est par défaut pas affichée, il est nécessaire de la rendre visible par setvisible(boolean) Par défaut, si on ferme la fenêtre, elle devient invisible mais n'est pas détruite. La méthode dispose() libère les ressources utilisées par JFrame en détruisant l'objet et ce qu'elle référence. Possibilité de spécifier le comportement à la clôture de la fenêtre par la graphiques méthode en Java setdefaultcloseoperation(int) les opérations étant DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE, EXIT_ON_CLOSE JFrame offre des méthodes de dimensionnement et de placement : setlocation, setsize, setresizable 18

Les couches de JFrame : JRootPane Le seul composant direct de JWindow, JDialog, JFrame, JApplet et JInternalFrame Un JRootPane a deux parties terminales : glasspane et contentpane. menubar est optionnel. layeredpane gère la géométrie des composants de contentpane et menubar Le glasspane (de type JPanel) sert à capter des évènements souris. Les composants sont ajoutés via le contentpane : frame.getcontentpane().add(child); 19 Les couches de JFrame : JLayeredPane Conteneur général pour des composants en couche. On peut donner des valeurs de niveau aux composants indiquant qui est affiché au dessus. Classe mère de JDesktopPane. La profondeur d une couche est représenté par un objet Integer. Six graphiques profondeurs en Java prédéfinies : FRAME_CONTENT_LAYER (-30000): le contentpane est de ce niveau DEFAULT_LAYER (0): niveau par défaut PALETTE_LAYER (100): pour les palettes, boîtes à outils déplaçables MODAL_LAYER (200): pour les dialogues modaux POPUP_LAYER (300): pour les menus glissants, les tooltips DRAG_LAYER (400): pour le glisser-déposer L affichage est évidemment en ordre croissant 20

Barres d outils en Swing JToolBar est un conteneur général, qui se redimensionne et peut être déplacé. Il contient classiquement des boutons groupés horizontalement ou verticalement. Il utilise un BoxLayout (horizontal par défaut). JToolBarTest Les composants d'une barre d'outils sont a priori des boutons (mais potentiellement tout type de composant) JToolBar graphiques en jtb Java = new JToolBar(); jtb.setfloatable(true); jtb.setrollover(true); jtb.add(new JButton("New")); jtb.add(new JButton("Open")); jtb.addseparator(); Icon ic = new ImageIcon("java.gif"); jtb.add(new JButton("Java",ic)); jtb.add(new JRadioButtonMenuItem ("ON/OFF")); this.getcontentpane().add(jtb, BorderLayout.PAGE_START); 21 Menus en Swing JMenuTest JPopupMenu sert pour les menus dynamiques (clic droit) Un menu a des entrées qui sont JMenuItem, JCheckBoxMenuItem, JRadioButtonMenuItem, JSeparator, et JMenu. JMenuBar jmb = new JMenuBar(); JMenu file = new JMenu ("File"); file.add(new JMenuItem ("New")); file.add(new JMenuItem ("Open")); file.addseparator(); file.add(new JMenuItem ("Close")); jmb.add(file);... this.setjmenubar(jmb); 22

Autres conteneurs Swing JPanel est un conteneur très général, dérive immédiatement de JComponent, est opaque (important pour les dessins), doublement bufferisé (améliore la fluidité de l affichage) JDesktopPane est un conteneur pour gérer des JInternalFrame Le JTabbedPane est un conteneur à navigation par onglets Le JScrollPane intègre des ascenceurs et permet de n afficher qu une partie d une zone Le JSplitPane introduit un volet mobile entre deux composants 23 JInternalFrame JInternalFrame est une frame qui apparait à l'intérieur d'un composant. Le plus souvent, on l'ajoute au DesktopPane d'une JFrame. public class JInternalFrameTest extends JFrame{ public JInternalFrameTest(){ super("jinternalframetest"); JInternalFrame intern = new JInternalFrame("Fenêtre interne"); intern.getcontentpane().add(new JLabel("Je suis une JInternalFrameTest fenêtre interne")); intern.setvisible(true); intern.setsize(200,300); intern.setresizable(true); intern.seticonifiable(true); intern.setmaximizable(true); JDesktopPane desk = new J DesktopPane(); desk.add(intern); this.setcontentpane(desk); this.setsize(400,600); this.setvisible(true); 24

JTabbedPane public class JTabbedPaneTest extends JFrame{ public JTabbedPaneTest() { super("jtabbedpanetest"); String tabs[] = {"C++", "Java", "Eiffel", SmallTalk"; JTabbedPane tabbedpane = new JTabbedPane(); this.setlayout (new BorderLayout()); for (int i=0;i<tabs.length;i++){ JPanel p = new JPanel(); p.add(new JLabel("Panel "+(i+1))); tabbedpane.addtab (tabs[i], null, p); tabbedpane.setselectedindex(0); tabbedpane.setmnemonicat(2,keyevent.vk_e); tabbedpane.seticonat(1,new ImageIcon("java.gif")); this.getcontentpane().add(tabbedpane,borderlayout.center); this.setsize(200,400); this.setvisible(true); public static void main(string[] args){ new JTabbedPaneTest(); JTabbedPaneTest 25 JScrollPane Gère automatiquement des ascenseurs autour de son composant central qui est un JViewPort. public class JScrollPaneTest extends JFrame{ public JScrollPaneTest() { super("jscrollpanetest"); JLabel comp = new JLabel(new ImageIcon("Madagascar.JPG")); JScrollPane scrollpane = new JScrollPane(comp); this.getcontentpane().add graphiques en Java JScrollPaneTest (scrollpane); this.setsize(200,400); this.setvisible(true); public static void main(string[] args){ new JScrollPaneTest(); 26

JSplitPane Panneau à compartiments, chaque compartiment est ajustable Panneau à séparation verticale ou horizontale JLabel mad = new JLabel(new ImageIcon("Madagascar.JPG")); JScrollPane graphiques scrollpane en Java = new JScrollPane(mad); JLabel one = new JLabel("Panel ONE"); JLabel two = new JLabel("Panel TWO"); JSplitPane right = new JSplitPane(JSplitPane.VERTICAL_SPLIT,one,two); right.setdividersize(20); right.setdividerlocation(0.1); JSplitPane left = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,new JScrollPane(mad),right); left.setonetouchexpandable(true); this.getcontentpane().add(left); JSplitPaneTest 27 Les composants Swing (1/3) Comportements ajoutés à Component : gestion d une bulle d aide : settooltiptext(string) gestion de l opacité : setopaque(boolean) et isopaque() Container JComponent Window AbstractButton JToggleButton Dialog JCheckBox JDialog JRadioButton JButton JLabel JTree JToolTip JFileChooser JSpinner JColorChooser JSlider JComboBox JTable JInternalFrame JList JProgressBar JOptionPane 28

Les composants Swing (2/3) 29 Les composants Swing (3/3) 30

Les composants texte Ils dérivent de JTextComponent : JTextField permet d'afficher une ligne de texte, éditable ou non JPasswordField permet la saisie d'une ligne de texte en affichant des étoiles JTextArea permet d'afficher un texte multi-lignes dans un style donné JEditorPane et JTextPane permettent d'afficher du texte en modes texte, HTML ou RTF, à partir de fichiers sources. Le style du texte peut ne pas être uniforme 31 ButtonGroup Une instance de ButtonGroup permet de grouper des boutons (AbstractButton qui regroupe JButton,JCheckBox, JRadioButton, et les équivalents en JMenuItem) de façon à ce qu'un seul soit sélectionné. Un ButtonGroup n'est pas un composant, les boutons ButtonGroupTest doivent être ajoutés dans un container. ButtonGroup bg = new ButtonGroup(); JRadioButton oui = new JRadioButton("OUI"); bg.add(oui); JRadioButton graphiques en non Java = new JRadioButton("NON"); bg.add(non); JCheckBox pe = new JCheckBox("PEUT ETRE"); bg.add(pe); JToolBar jtb = new JToolBar(); jtb.setfloatable(true); jtb.setrollover(true); jtb.add(oui); jtb.add(non); jtb.add(pe); this.getcontentpane().add(jtb, BorderLayout.PAGE_START); 32

JToolTip JToolTip sert à ajouter des bulles d'aide sur les composants. On peut créer ses propres formats de bulles d'aide en subclassant JToolTip et en redéfinissant la méthode settooltiptext de JComponent Button b = new Button("bouton"); b.settooltiptext("je suis un bouton"); TooTipTest 33