Interface Graphique en Java 1.6. Containers, menus, barre d'outils et actions. Sébastien Paumier



Documents pareils
Interfaces graphiques avec l API Swing

Construire des plug-ins pour SAS Management Console SAS 9.1

Once the installation is complete, you can delete the temporary Zip files..

Access 2007 FF Access FR FR Base

How to Login to Career Page

Instructions Mozilla Thunderbird Page 1

WEB page builder and server for SCADA applications usable from a WEB navigator

Vanilla : Virtual Box

Comment Utiliser les Versions, les Modification, les Comparaisons, Dans les Documents

WiFi Security Camera Quick Start Guide. Guide de départ rapide Caméra de surveillance Wi-Fi (P5)

StarDraw, le module de dessin de StarOffice 6/7

Insérer des images dans Base

RAPID Prenez le contrôle sur vos données

DOCUMENTATION - FRANCAIS... 2

Programmation en Java Interface graphique. NGUYEN Thi Minh Tuyen

Tutoriel de formation SurveyMonkey

OpenOffice.org Calc Ouvrir un classeur

lundi 3 août 2009 Choose your language What is Document Connection for Mac? Communautés Numériques L informatique à la portée du Grand Public

Prise en main du logiciel Smart BOARD

Dessiner dans Galaad FRANÇOIS PALLUT

Comment sauvegarder ses documents

Comment accéder à une vision synthétique de mon activité commerciale?

Silhouette Studio Leçon N 2

Développement Logiciel

Cette fonctionnalité est paramétrable et accessible dans le module administration via le menu "Dossier / Administration".

L ORDINATEUR FACILE D ACCÈS!

Micro-ordinateurs, informations, idées, trucs et astuces utiliser le Bureau à distance

OpenOffice.org Présentation - Débuter. Distribué par Le projet OpenOffice.org

Guide pour la réalisation d'un document avec Open Office Writer 2.2

Exercices sur SQL server 2000

Freeway 7. Nouvelles fonctionnalités

Introduction à Windows 8

AVEC LIVE TRADER, VISEZ PLUS HAUT POUR VOS INVESTISSEMENTS

Supervision et infrastructure - Accès aux applications JAVA. Document FAQ. Page: 1 / 9 Dernière mise à jour: 15/04/12 16:14

Correction des Travaux Pratiques Organiser son espace de travail

LES BIBLIOTHEQUES DE WINDOWS 7

Guide de démarrage rapide

Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00

Indiquer l'espace libre sur le disque dur

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

Comment faire des étiquettes

Guide d'installation rapide TFM-560X YO.13

Notice Technique / Technical Manual

Guide d'utilisation. OpenOffice Calc. AUTEUR INITIAL : VINCENT MEUNIER Publié sous licence Creative Commons

Interwrite Workspace version 8 avec le projecteur Epson

Ingénierie Dirigée par les Modèles. Editeurs de modèles. (Eclipse Modeling Tools) Jean-Philippe Babau

Ressources pour débutant du logiciel SMART Notebook

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

Ressources pour débutant du logiciel SMART Notebook

Fonctionnement général de Tiny ERP

CRÉER UN DVD VIDEO avec DVD FLICK (avec ou sans menu)

Guide de l'utilisateur. Linksys AE1000 Adaptateur USB sans fil - N hautes performances

Contents Windows

Assistance à distance sous Windows

Tutoriel d utilisation du Back-Office du site de la ligue

Comment Accéder à des Bases de Données MySQL avec Windows lorqu'elles sont sur un Serveur Linux

PRESENTATION DU LOGICIEL

DOCUMENTATION - FRANCAIS... 2

English Q&A #1 Braille Services Requirement PPTC Q1. Would you like our proposal to be shipped or do you prefer an electronic submission?

Tutorial et Guide TeamViewer

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

SOMMAIRE AIDE À LA CRÉATION D UN INDEX SOUS WORD. Service général des publications Université Lumière Lyon 2 Janvier 2007

Date de diffusion : Rédigé par : Version : Mars 2008 APEM 1.4. Sig-Artisanat : Guide de l'utilisateur 2 / 24

Guide de prise en main Windows 8

Google Drive, le cloud de Google

Les tablettes et l'extranet Intermixt Mode d'emploi

Chapitre 1: Bienvenus Au Seavus Project Viewer

Organiser le menu "Démarrer"

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

NAVIGATION SUR INTERNET EXPLORER

WDpStats Procédure d installation

8 Mars Guide du Wiki Confluence

Installation et paramétrage. Accès aux modèles, autotextes et clip- art partagés

Tutoriel Prise en Main de la Plateforme MetaTrader 4. Mise à jour : 7/09/

Utilisation du client de messagerie Thunderbird

calls.paris-neuroscience.fr Tutoriel pour Candidatures en ligne *** Online Applications Tutorial

eurobraille VOYONS ENSEMBLE MANUEL D'UTILISATION WIFI iris 40, 20 iris-s 32, 20 iris-kb 40,20 VERSION 1.82

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

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

Conférence Web sur demande de TELUS Guide de référence rapide

Qlik Sense Cloud. Qlik Sense Copyright QlikTech International AB. Tous droits réservés.

Manuel de formation 1.1

Tango go.box - Aide. Table des matières

G.T.I. Windows V1.1 Guide d Utilisation

Guide d utilisation. Version 10

F O R M A T I O N S LOTUS NOTES. 8.5 Utilisateurs rue de la Bôle. E U R L. a u c a p i t a l d e

USB 598. Quick Start Guide (Windows) Guide de démarrage rapide (Windows) USB Modem. Modem USB.

Swyx Skin Editor - Guide de l'utilisateur. SwyxIt Skin Editor L éditeur de création des habillages individuels

La base de données dans ArtemiS SUITE

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

Note de cours. Introduction à Excel 2007

Dans ce mémento, vous trouverez les informations détaillées pour configurer les fonctionnalités du Responsive Design dans le Worldsoft CMS:

Contrôle d'accès Access control. Notice technique / Technical Manual

et Active Directory Ajout, modification et suppression de comptes, extraction d adresses pour les listes de diffusion

Dans la série. présentés par le site FRAMASOFT

Package Contents. System Requirements. Before You Begin

TRUCS & ASTUCES SYSTEME. 1-Raccourcis Programme sur le Bureau (7)

Utilisation du logiciel Epson Easy Interactive Tools

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

Transcription:

Interface Graphique en Java 1.6 Containers, menus, barre d'outils et actions Sébastien Paumier paumier@univ-mlv.fr Illustrations provenant du site http://tux.crystalxp.net/ 1

Les containers rappel: tous les composants Swing sont des containers potentiels, même s'il vaut mieux ne pas essayer pour la plupart d'entre eux règle d'or: on ne peut pas ajouter un même composant plusieurs fois: ni dans le même container ni dans des containers différents JPanel est le container le plus simple, mais il y en a d'autres... paumier@univ-mlv.fr 2

Les containers spécialisés containers qui imposent un layout manager, et parfois des fils exemple: JFrame impose un fils unique JRootPane faciles à utiliser pas besoin d'en définir de nouveaux, à moins d'un besoin très particulier attention: on n'ajoute pas forcément les composants avec le add classique... paumier@univ-mlv.fr 3

La Box Box (pas de J) est presque équivalente à un JPanel muni d'un BoxLayout Box box=new Box(BoxLayout.Y_AXIS); remarque: l'orientation passée au constructeur est un champ de BoxLayout et non de Box attention: container transparent, ne pas l'utiliser comme content pane paumier@univ-mlv.fr 4

La Box à n'utiliser que quand on veut vraiment de la transparence Box b=new Box(BoxLayout.Y_AXIS); b.add(new JRadioButton("Alpha")); b.add(new JRadioButton("Beta")); b.add(new JRadioButton("Gamma")); b.add(box.createverticalglue()); /* This has no effect on a Box! */ b.setopaque(true); b.setborder(borderfactory.createtitledborder("box")); paumier@univ-mlv.fr 5

Le JSplitPane container à 2 zones séparées par une barre de redimensionnement ne peut pas réduire un composant à moins de sa taille minimum ne peut recevoir que 2 composants qui sont passés au constructeur: public JSplitPane(int neworientation, boolean newcontinuouslayout, Component newleftcomponent, Component newrightcomponent) paumier@univ-mlv.fr 6

Le JSplitPane les composants sont maximisés à la taille disponible dans leur zone paumier@univ-mlv.fr 7

Le JTabbedPane container à onglets ajout des composants avec: addtab(string title,component c) possible de définir le placement des onglets avec: set/gettabplacement que faire quand ça déborde? set/gettablayoutpolicy paumier@univ-mlv.fr 8

Le JTabbedPane chaque composant est maximisé accès au composant sélectionné: set/getselectedcomponent(component c) ou set/getselectedindex(int index) paumier@univ-mlv.fr 9

Le JTabbedPane si on veut gérer soi-même l'onglet, il faut utiliser: settabcomponentat(int index,component c) exemple: container avec label+2 boutons personnalisés paumier@univ-mlv.fr 10

Le JScrollPane permet d'afficher un composant à sa taille préférée, sans le réduire s'il n'y a pas assez d'espace le composant est passé au constructeur: JScrollPane(Component view, int vsbpolicy, int hsbpolicy) les 2 autres paramètres régissent la présence des barres de défilement paumier@univ-mlv.fr 11

Le JScrollPane gestion des barres de défilement: paumier@univ-mlv.fr 12

Le JScrollPane pour que ça fonctionne, le composant inséré doit implémenter Scrollable: composants textes, listes, tables, arbres pour un composant texte qui gère le multiligne, il faut ruser: soit le mettre au centre d'un panel avec un BorderLayout soit redéfinir getscrollabletracksviewportwidth() pour toujours retourner false paumier@univ-mlv.fr 13

Le JScrollPane passage à la ligne géré par le JTextPane pas de passage à la ligne, c'est le JScrollPane qui travaille paumier@univ-mlv.fr 14

Le JScrollPane possibilité d'ajouter des headers et un coin avec: setrowheaderview(component c) setcolumnheaderview(component c) setcorner(string key,component c) position du coin (s'il reste de la place): - ScrollPaneConstants.UPPER_LEFT_CORNER - ScrollPaneConstants.UPPER_RIGHT_CORNER - etc. paumier@univ-mlv.fr 15

Le JScrollPane bouton dont la largeur a été calée manuellement sur la largeur préférée du JTextPane JPanel qui prend les hauteur et largeur des headers JTextPane servant à indiquer les numéros de lignes paumier@univ-mlv.fr 16

Le JLayeredPane affiche les composants par couches chaque couche est codée par un Integer: add(biniou,14) add(biniou,integer.valueof(14)) par défaut, il n'y a pas de layout manager pour déterminer la taille des composants contenus dans le JLayeredPane :( il faut donc en écrire un, mais on sait faire :) (cf. fr.umlv.ig.lesson1.layeredlayoutmanager) paumier@univ-mlv.fr 17

Le JLayeredPane exemple à 3 couches: - pour voir à travers la couche 17, il faut rendre le JSplitPane transparent - pour pouvoir cliquer à travers le JLabel, il faut que le JSplitPane dise qu'il ne contient pas les clics sur le JLabel paumier@univ-mlv.fr 18

La méthode contains contains est utilisée par Swing pour savoir (entre autres choses) qui est concerné par un clic donc, facile de faire mentir le JSplitPane: JSplitPane split=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,label,b) { /* These overridings are used to allow clicks on the background * through the JLabel */ @Override public boolean contains(int x, int y) { if (label.contains(x,y)) {return false;} return super.contains(x,y); } }; @Override public boolean contains(point p) { if (label.contains(p)) {return false;} return super.contains(p); } paumier@univ-mlv.fr 19

Le JDesktopPane container spécial destiné à recevoir des fenêtre internes (JInternalFrame) ne JAMAIS lui donner de layout manager: paumier@univ-mlv.fr 20

La JInternalFrame fenêtre interne à ne mettre que dans un JDesktopPane: JInternalFrame(String title, boolean resizable, boolean closable, boolean maximizable, boolean iconifiable) ATTENTION: invisible et de taille 0,0 par défaut! possède un root pane, donc on a accès à une barre de menu, un content pane et un glass pane paumier@univ-mlv.fr 21

La JInternalFrame toutes les fenêtres sont par défaut en haut à gauche pas de gestion des fenêtres en cascade, en grille, etc :( paumier@univ-mlv.fr 22

Les menus on ajoute une barre de menu à une JFrame/JInternalFrame avec: setjmenubar(jmenubar bar) une JMenuBar contient des JMenu qui peuvent contenir: des boutons spéciaux: JMenuItem, JRadioButtonMenuItem, JCheckBoxMenuItem des séparateurs: addseparator() des sous-menus de type JMenu paumier@univ-mlv.fr 23

Les menus 3 modes de sélection: clic de souris validation clavier avec Entrée mnémonique (caractère souligné) item sélectionnable en pressant 'M' paumier@univ-mlv.fr 24

Les menus exemple de sous-menu: on utilise un ButtonGroup comme d'habitude on réagit aux sélections d'items avec des ActionListener, comme pour les boutons normaux paumier@univ-mlv.fr 25

Les menus contextuels tout composant peut recevoir un menu contextuel avec: setcomponentpopupmenu(jpopupmenu menu) fonctionne comme un JMenu apparaît quand on fait un clic droit sur le composant concerné paumier@univ-mlv.fr 26

Les actions une action définit: un nom un raccourci clavier (accelerator) un mnémonique une icône une description courte du code à exécuter un état activé/désactivé permet d'éviter des duplications de code paumier@univ-mlv.fr 27

Les actions exemple: un bouton "Run" final Action buttonaction=new AbstractAction("Run", new ImageIcon( fr.umlv.ig.example_viewer.guiexampleviewer.class.getresource("run.png"))) { @Override public void actionperformed(actionevent e) { JOptionPane.showMessageDialog(f,"OK, I run."); } }; /* KeyEvent.VK_R matches both 'r' and 'R' */ buttonaction.putvalue(action.accelerator_key, KeyStroke.getKeyStroke(KeyEvent.VK_R,Event.CTRL_MASK)); /* We need to use the following because 'U' would be * autoboxed into a Character and not an Integer */ buttonaction.putvalue(action.mnemonic_key,integer.valueof('u')); buttonaction.putvalue(action.short_description,"shows a message"); menu.add(new JMenuItem(buttonAction)); l'action est passée au constructeur du bouton paumier@univ-mlv.fr 28

Les actions le nom avec le mnémonique l'accélérateur l'icône la bulle d'aide paumier@univ-mlv.fr 29

Les actions on peut désactiver le texte de l'action: JButton b=new JButton(buttonAction); b.sethideactiontext(true); /* NOTE: settext must occur AFTER sethideactiontext */ b.settext("the same with my own text"); on peut aussi gérer la sélection pour les boutons qui le supportent: final Action enableaction=new AbstractAction("Enable RUN") { @Override public void actionperformed(actionevent e) { /* The method isselected does not exist in Action */ buttonaction.setenabled((boolean)getvalue(action.selected_key)); } }; /* You can replace 'true' by any non null value: * - null means: selection not taken into account * - null means: getvalue(action.selected_key) will return a Boolean * However, if you use 'true', you will set the state as selected */ enableaction.putvalue(action.selected_key,true); menu.add(new JCheckBoxMenuItem(enableAction)); paumier@univ-mlv.fr 30

Les actions tous les boutons "Run" ont le même comportement gestion centralisée du bouton "Run" paumier@univ-mlv.fr 31

La barre d'outils une JToolBar peut être placée sur les bords (et pas au centre!) d'un container muni d'un BorderLayout ne rien mettre d'autre qu'un composant au centre et la JToolBar paumier@univ-mlv.fr 32

La barre d'outils utilise un BoxLayout peut se détacher si elle est floatable quand on ferme une JToolBar flottante: elle retourne à sa dernière position si est floatable elle disparaît sinon paumier@univ-mlv.fr 33