Cours 2 : Placer des composants dans une fenêtre



Documents pareils
Interfaces graphiques avec l API Swing

Java 7 Les fondamentaux du langage Java

Cours 2 : programmation des interfaces graphiques

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

Développement Logiciel

Programmation en Java Interface graphique. NGUYEN Thi Minh Tuyen

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

Construire des plug-ins pour SAS Management Console SAS 9.1

Programmation Orientée Objet

Auto-évaluation Programmation en Java

Guide de configuration. Logiciel de courriel

Formation. Module WEB 4.1. Support de cours

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

GUIDE D INSTALLATION INTERNET haute vitesse

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

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

AVEC LIVE TRADER, VISEZ PLUS HAUT POUR VOS INVESTISSEMENTS

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

CREER ET ANIMER SON ESPACE DE TRAVAIL COLLABORATIF

LES BIBLIOTHEQUES DE WINDOWS 7

Utilisation de l éditeur.

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

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

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

Outlook Présentation.

Manuel d utilisation du site web de l ONRN

Silhouette Studio Leçon N 2

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

Comment accéder à d Internet Explorer

Google Drive, le cloud de Google

GUIDE D UTILISATION. Gestion de compte. à destination des entreprises (Employeurs et Organismes de Formation)

Utiliser le service de messagerie électronique de Google : gmail (1)

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

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

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

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

Le logiciel de création de site internet IZISPOT est un outil très puissant et qui est assez simple après quelques temps d utilisation.

Volet de visualisation

Informations techniques préparatoires

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

Sélection du contrôleur

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

NOTICE D UTILISATION

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

Tutoriel BlueJ. Michael Kölling Mærsk Institute University of Southern Denmark. Version 1.4 fr-2 par le groupe Sigma 1 pour BlueJ Version 1.2.

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

Guide de l utilisateur du Centre de gestion des licences en volume LICENCES EN VOLUME MICROSOFT

Édu-groupe - Version 4.3

Créer et partager des fichiers

Création d une connexion VPN dans Windows XP pour accéder au réseau local de l UQO. Document préparé par le Service des technologies de l information

ScTools Outil de personnalisation de carte

Création d un compte Exchange (Vista / Seven)

Correction des Travaux Pratiques Organiser son espace de travail

Utilisation du client de messagerie Thunderbird

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

Guide d utilisation 2012

Principales Evolutions Version

Manuel d utilisation de l outil collaboratif

Afin d accéder à votre messagerie personnelle, vous devez vous identifier par votre adresse mail et votre mot de passe :

Connecteur Zimbra pour Outlook 2007 et 2010 (ZCO) w

PRISE EN MAIN D UN TABLEUR. Version OPEN OFFICE

Gestionnaire d emploi du temps

Manuel d utilisation du logiciel Signexpert Paraph

Guide d utilisation commandes des pièces de rechange Rev.1.0.3

Installation et utilisation du client FirstClass 11

Notes pour l utilisation d Expression Web

Note Technique. 1. Objectif. 2. Prérequis. 3. Installation

Gestion des documents avec ALFRESCO

L accès à distance du serveur

Vous pouvez à présent à reconfigurer votre messagerie en cliquant ici.

LES ACCES DISTANTS ET SECURISES. Installation et utilisation du client. Cisco AnyConnect VPN Client. pour Windows

TP2 : Client d une BDD SqlServer

Installation et configuration du serveur syslog sur Synology DSM 4.0

Améliorer l expérience utilisateur en environnement TSE (Terminal Services, Services Bureau à distance, Remote App)

La messagerie électronique

Guide d installation CLX.PayMaker Office (3PC)

Utilisation d une tablette numérique

Enregistrement de votre Géorando Maxi Liberté

Indiquer l'espace libre sur le disque dur

Alfresco Guide Utilisateur

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

Table des matières. Télécharger MetaTrader 4. Première connexion à MetaTrader 4. Se connecter à MetaTrader 4. Modifier la langue

PARCOURS 3 EXPERIMENTATION APPRENTISSAGE : PHASE 2 CARA CREATION DU PROGRAMME POUR LA PHASE 2

Remote Method Invocation (RMI)

Guide Expert Comptable Production Coala

Procédure d installation de mexi backup

Découvrez Windows NetMeeting

AGASC / BUREAU INFORMATION JEUNESSE Saint Laurent du Var - E mail : bij@agasc.fr / Tel : CONSIGNE N 1 :

Optimiser pour les appareils mobiles

2013 Pearson France Adobe Illustrator CC Adobe Press

Menu Fédérateur. Procédure de réinstallation du logiciel EIC Menu Fédérateur d un ancien poste vers un nouveau poste

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Introduction à Eclipse

AIDE TECHNIQUE POUR L UTILISATION DE GÉODEQ III VUES D ENSEMBLE DU QUÉBEC

Guide de l utilisateur de Cisco Unified Communications Manager Assistant pour Cisco Unified Communications Manager 6.0

SAUVEGARDER SES DONNEES PERSONNELLES

Automatisation d'une Facture 4. Liste Déroulante Remises Case à cocher Calculs

Form Designer Guide d utilisateur DOC-FD-UG-FR-01/01/12

Placez vous au préalable à l endroit voulu dans l arborescence avant de cliquer sur l icône Nouveau Répertoire

SOMMAIRE ÉTAPES OBLIGATOIRES. Récupérer le connecteur... 3

Transcription:

Cours 2 : Placer des composants dans une fenêtre - Les composants graphiques - Les gestionnaires de mise en page : layout - Un exemple complet - Les menus F. Gayral 1

Les composants graphiques : Hiérarchie Component (abstract class) JComponent (base composants Swing Panel (vieille classe awt) Applet (vieille classe awt) JApplet Container (abstract class) Window (pas de bord ni titre) Frame (vieille classe awt) JFrame Dialog (vieille classe awt) JDialog (base fenêtres applets) (base fenêtres applications) (base fenêtres dialogues) (classes définissant des composant Swing spécifiques) JWindow (pas de bord ni titre) "top-level" containers F. Gayral 2

Commentaires sur le haut de la hiérarchie Ce qui commence par J : swing, le reste : awt Classe Component : fournit les méthodes d affichage et de traitement des événements Classe Container : Un conteneur permet d inclure d autres composants Les composants graphiques se mettent dans un container F. Gayral 3

Les composants de haut niveau ou "top-level" containers : de 3 types JFrame : fenêtre principale d une application. Peut contenir des menus, et d autres composants. Utilisé par héritage pour créer des classes de fenêtres spécifiques à une application JDialog: fenêtre de dialogue avec l utilisateur Utilisé par héritage pour créer des boîtes de dialogues spécifiques JApplet : pour les applications web téléchargées sur le poste client à partir d un serveur web (vu plus tard) Utilisé par héritage pour créer des applets spécifiques F. Gayral 4

Les composants à placer dans les "top-level" containers : la classe JComponent Classe de base de tous les composants Swing utilisés pour placer à l'intérieur d'une fenêtre de haut niveau Sous-classes = composants standard = Menus (JMenu, JMenubar, JMenuItem) Boutons (JButton), checkboxes (JCheckBox), Zones de textes (JLabel, JTextField, JTextArea), etc. F. Gayral 5

Attributs standards des composants Un composant peut être : enabled : quand le composant l est, il est actif (~ peut répondre à des actions de l utilisateur) visible ou non à l écran opaque : un composant est opaque s il est rempli avec sa couleur de fond Tous ces attributs sont private. On y accède ou on les change par les accesseurs habituels (setxxx, getxxx). F. Gayral 6

Méthodes standards des composants : exemples Les méthodes générales : JComponent comp=new... comp.setbackground(color.yellow); comp.setopaque(true); comp.setfont(new Font("Serif", Font.BOLD, 24)); comp.setenabled(false); Les méthodes spécifiques : Les constructeurs : plusieurs, dépendent de la classe méthodes spécifiques à chaque classe de composant F. Gayral 7

Une branche héritant de JComponent les boutons et les items de menus JComponent AbstractButton JToggleButton JMenuItem JButton JCheckBox JRadioButton JCheckBoxMenuItemJRadioButtonMenuItem F. Gayral 8

Les boutons JButton définit un bouton standard JButton b=new JButton(«OK»); JToggleButton définit un bouton à deux états. Il est en deux versions : JCheckBox JRadioButton : nécessairement en groupe et un seul du groupe est dans l état «pressé» F. Gayral 9

JCheckBox bchin = new JCheckBox(«Chin JCheckBox bglasses = new JCheckBox(«G bglasses.setselected(true); 1. Création des boutons JRadioButton bbird, bcat; bbird= new JRadioButton («Bird»); bcat = new JRadioButton («Cat»);. 2. Création du groupe ButtonGroup group=new ButtonGroup(); group.add(bbird); group.add(bcat);... F. Gayral 10

Quelques sous-classes de JComponent les composants de texte Grande variété de ces composants dans Swing JComponent JTextComponent JLabel JEditorPane JTextField JTextArea JTextPane JFormattedTextField F. Gayral 11

Les composants de texte JLabel : le plus simple. Complètement passif. Non éditable JTextField : idem, une seule ligne de texte (pas de retour chariot), éditable JTextArea : plusieurs lignes de texte, présence d un ascenseur, éditable JEditorPane et JTextPane : composants plus complexes permettant d implémenter des fonctions d édition élaborées, et gestion de html, rtf. JTextPane permet d avoir en plus des images. F. Gayral 12

Méthodes des composants de texte sous-classe de JTextComponent Méthodes : String gettext() : récupère le texte présent dans la zone de texte void settext(string s) : remplace le texte présent dans la zone de texte par s Exemples : JTextField tnom= new JTextField("Récupère",20); String s = tnom.gettext(); JTextArea jta = new JTextArea(); jta.settext("bonjour\nsalut\nau revoir\n"); jta.append("ciao\n"); JScrollPane scrollpane=new JScrollpane(jta); F. Gayral 13

Ajout d'un composant à une fenêtre de haut niveau Constitution d'un "top-level" container titre de la fenêtre barre de menus optionnelle Objet contentpane de type Container. C est ici que vous dessinez, ou rajoutez d autres composants F. Gayral 14

Ajouter un composant à un "top-level" container : quelques règles Chaque "top-level" container possède une aire de travail, une instance de la classe Container. On n ajoute pas un composant directement à un top-level container (JFrame, JApplet ou JDialog) mais à son aire de travail On accède à cette aire de travail en adressant la méthode getcontentpane() (présente dans chacune des classes "top-level") à la fenêtre JFrame fen=new JFrame("ajout"); Container c=fen.getcontentpane(); c.add(.) Une instance de JComponent créée avec un constructeur F. Gayral 15

Disposition et taille des composants : les Layout manager La disposition et la taille des composants se fait grâce à un gestionnaire de mise en page (layout) associé à tout container Ce gestionnaire de mise en page place le composant en suivant des règles spécifiques et relativement à la taille de la fenêtre Il y a plusieurs classes de layout managers dans awt et swing F. Gayral 16

Classes de Layout FlowLayout : place les objets dans des rangées successives. FlowLayout BorderLayout : place les objets contre les quatre bords et au centre. Placement géographique BorderLayout GridLayout : place les objets dans une grille dont vous donnez le nombre de lignes et de colonnes GridLayout BoxLayout : les composants sont mis dans une ligne ou une colonne BoxLayout F. Gayral 17

Changer de gestionnaire de mise en page Certains composants ont des gestionnaires de mise en page par défaut JPanel : FlowLayout contentpane d une JFrame : BorderLayout S il ne convient pas, on peut en changer en adressant au composant la méthode : setlayout(layoutmanager l) Exemple : changer le layout du contentpane d une JFrame : JFrame fen=new JFrame("changement de mise en page"); Container c=fen.getcontentpane(); FlowLayout flow = new FlowLayout(); c.setlayout(flow); F. Gayral 18

La classe BorderLayout : place les objets contre les quatre bords et au centre. Placement géographique (N/S/W/E/C). public class DemoBorderLayout extends JFrame { public DemoBorderLayout(String titre, int w, int h) { super(titre); this.initialise(w,h); this.show(); } public void initialise(int w, int h) { this.setsize(w,h); BorderLayout", 600, 400); } Container c=this.getcontentpane(); c.add(new JButton("Button 1"), "North"); c.add(new JButton("2"), "Center"); c.add(new JButton("Button 3"), "West"); c.add(new JButton("Long-Named Button 4"), "South"); c.add(new JButton("Button 5"), "East"); } public static void main(string[] args) { new DemoBorderLayout ("Essai F. Gayral 19

La classe FlowLayout : de gauche à droite sur des lignes successives, positionnement des composants s'adapte si on modifie la taille de la fenêtre public class DemoFlowLayout extends JFrame { public DemoFlowLayout(String titre, int w, int h) { super(titre); this.initialise(w,h); this.show(); } public void initialise(int w, int h) } { this.setsize(w,h); Container c=this.getcontentpane(); c.setlayout(new FlowLayout()); c.add(new JButton("Button 1")); c.add(new JButton("2")); c.add(new JButton("Button 3")); c.add(new JButton("Long-Named public static void main(string[] args) { new DemoFlowLayout ("Essai de FlowLayout", 600, 400); } F. Gayral 20

GridLayout : arrange les composants dans une grille rectangulaire avec le nombre de lignes et de colonnes déclarées Composants placés de haut en bas et de gauche à droite. Différents constructeurs possibles c.setlayout(new GridLayout(3,2));... c.setlayout(new GridLayout(3, 2, 20, 60)); c.add(new JButton("Button 1")); // range par ligne d abord c.add(new JButton("2"));. F. Gayral 21

Le gestionnaire BoxLayout pour mettre les composants (vertical ou horizontal) Le constructeur exige le composant cible et l axe : public BoxLayout(Container target, int axis) axis est défini par une constante de classe de BoxLayout : public void init { Container Y_AXIS c=this.getcontentpane(); X_AXIS c.setbackground (Color.white); c.setlayout(new BoxLayout(c, BoxLayout.Y_AXIS). F. Gayral 22

Composants qui aident à organiser d autres composants : la classe JPanel (1) Permet de : subdiviser un container en plusieurs zones chacune de ces zones pouvant : adopter un gestionnaire de mise en page différent contenir plusieurs composants ou d autres souspanneaux JComponent Démo JPanel F. Gayral 23

Gestionnaire de mise en page d'un panel Par défaut le gestionnaire de mise en page d'un panel est de type FlowLayout 2 constructeurs de JPanel JPanel() : crée un panneau muni du gestionnaire par défaut (FlowLayout) JPanel(LayoutManager) : crée un panneau avec le gestionnaire précisé en paramètre L'ajout d'un composant au panel se fait grâce à la méthode add() F. Gayral 24

Analyse de l exemple Une fenêtre contenant deux panels : 1 panel au centre muni d un gestionnaire de type Grille 2*2 (GridLayout) 1 panel au Sud muni du FlowLayout par défaut Pour la modularité, définition d une méthode initialise() de la fenêtre qui dispose les composants graphiques, elle-même décomposée en : une méthode creepanelcentre() renvoyant un JPanel une méthode creepanelsud() renvoyant un JPanel F. Gayral 25

public class FrameAvecPanel extends JFrame { public FrameAvecPanel(String title, int w, int h) { super(title); this.initialise(); this.setsize(w,h); this.show(); } public void initialise() { // ou en une seule instruction Container c=this.getcontentpane(); c.add ( this.creepanelcentre(), JPanel pentree =this.creepanelcentre(); "Center" ); c.add(pentree, "Center"); JPanel pboutons=this.creepanelsud(); c.add(pboutons,"south"); } F. Gayral 26

public JPanel creepanelcentre() { JPanel pcentre=new JPanel(new GridLayout(2,2,80,20)); pcentre.add(new JLabel("Donnez votre prénom")); JTextField tprenom = new JTextField(""); pcentre.add(tprenom); pcentre.add(new JLabel("Donnez votre nom")); JTextField tnom = new JTextField(""); pcentre.add(tnom) ; return pcentre; } public JPanel creepanelsud() { JPanel psud = new JPanel(); JButton bcancel = new JButton ("Cancel") ; JButton bok = new JButton ("OK") ; psud.add(bcancel); psud.add(bok); return psud; } F. Gayral 27

Comment créer des menus? Swing supporte les pop-up menus, les menus contextuels et les menubars JComponent JMenuBar AbstractButton JPopMenu JMenuItem diobuttonmenuitem JMenu JCheckBoxMenuItem F. Gayral 28

Définir des Menus utiliser 3 classes JMenuBar, JMenu, JMenuItem JMenuBar : barre des menus placée en haut de la fenêtre d une application Une barre de menu est composée de JMenus Un objet JMenu possède un label, et quand on clique dessus, il peut montrer un menu déroulant Un item d un objet JMenu peuvent être un objet de type JMenuItem, JCheckBoxMenuItem oujradiobuttonmenuitem Démo Un objet JMenuItem est un simple élément de menu avec un label. Il peut avoir une icône en plus de son label F. Gayral 29

Les méthodes d ajout : 3 étapes On ajoute une barre de menu à une JFrame grâce à la méthode setjmenubar(jmenubar) de JFrame Une barre de menu est composée de JMenus qu on ajoute par la méthode add(jmenu) de JMenuBar On ajoute des items de menus à un JMenu par la méthode add(jmenuitem) de JMenu F. Gayral 30

Un exemple this.addmenu(); public FenetreSimpleMenu(String titre) {super(titre); JMenuBar jmb = new JMenuBar(); this.setjmenubar(jmb); 1 JMenu mdef = new JMenu ("Définir"); jmb.add(mdef); 2 JMenuItem defnom= new JMenuItem ("le nom"); mdef.add(defnom); JMenuItem defprenom= new JMenuItem ("le prenom"); mdef.add(defprenom); JMenu maff = new JMenu ("Afficher"); jmb.add(maff); 3 F. Gayral 31