Descriptif 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 
41 42 43 44 45 

Swing - Interface Homme-Machine

4.4.Les conteneurs utilitaires spécifiques

4.4.1.JRootPane

Une instance de JRootPane est créée automatiquement par la JFrame lors de son initialisation. Le constructeur de JFrame fait automatiquement appel à la méthode createRootPane().

Le JRootPane ainsi créé contient les éléments suivants :
  • glassPane (un JPanel par défaut)
  • layeredPane (un JLayeredPane)
  • contentPane (un JPanel par défaut)
  • menuBar (un JMenuBar null par défaut)
Voici l’illustration des différents éléments évoqués précédement :

glassPane menuBar


layeredPane


contentPane
  • glassPane est transparent et s’avère très utile lorsqu’il va s’agir d’intercepter des événements générés par la souris.
  • layeredPane correspond à un type particulier (JLayeredPane), et il va permettre de contenir des fenêtres filles à l’instar des applications MDI de Microsoft.
  • contentPane est un panneau créé lui aussi par défaut, il reçoit les composants à l’aide de l’instruction suivante :
maJFrame.getContentPane().add(monComponent)
  • menuBar n’existe pas par défaut (il est null donc pas encore instancié), mais il est aisément créé par la méthode suivante :
setJMenuBar(menu);

4.4.2.GlassPane

C’est un panneau transparent positionné au dessus du JRootPane auquel il est associé. Il va s’avérer utile dans la capture d’évènements de souris généralement et plus généralement dans la plupart des questions sur le pointeur de la souris.

Il est accéssible via les méthodes getGlassPane() et setGlassPane(Component c) de l’interface RootPaneContainer implémentées par les conteneurs ayant un JRootPane.

4.4.3.JLayeredPane

JLayeredPane est un conteneur qui peut posséder un nombre de couches quasiment illimité. Les composants contenus dans un Layer (une couche de JLayeredPane) sont organisés selon leur position.
Lorsque deux composants d’un même layer se chevauchent le composant de valeur élevée est affichés en dessous de celui de valeur basse.
Cependant, en ce qui concerne les Layers, c’est le contraire qui se passe. Les Layers de valeur élevée sont affichés au dessus des Layers de valeur basse.
Les positions dans un layer
Dans un layer contenant N composants, les positions de ceux-ci sont numérotées de -1 à (N-1). En ce qui concerne l’affichage, le composant de position 0 est au dessus du composant de position N.
La profondeur (Depth)
Lorsqu’un composant est contenu dans un layer, ce dernier est considéré comme étant la profondeur (Depth) du composant.
Mais un composant est aussi représenté par son index. L’index est une valeur entière différente pour chacun des composants du JLayeredPane. On peut interroger un composant pour connaître son index, mais on ne peut pas changer l’index d’un composant.

Chaque Layer d’un JLayeredPane est représenté par un Objet Integer.
La classe JLayeredPane définit les six constantes Integer suivantes :
  • FRAME_CONTENT_LAYER
  • DEFAULT_LAYER
  • PALETTE_LAYER
  • MODAL_LAYER
  • POPUP_LAYER
  • DRAG_LAYER

Ces Layers sont destinés à être les Layers standards.
L’ajout de layers
Lorsque l’on ajoute un composant au JLayeredPane à l’aide de la méthode add(Component), celui-ci est placé dans le layer DEFAULT_LAYER (représenté par Integer(0));
Pour ajouter un composant à un layer particulier, on utilise la méthode add(component, Object).
Pour le layer 10 par exemple, on passera l’objet Integer(10).
On peut aussi passer les valeurs des layers standards, par exemple JLayeredPane.POPUP_LAYER
Pour ajouter un composant à un layer particulier et à une position donnée on utilisera la méthode add(Component composant, Object obj, int position).

4.4.4.JDesktopPane

JDesktopPane est une extension de JLayeredPane spécialement construite pour gérer des fenêtres filles du type JInternalFrame. JDesktopPane permet d’ajouter des composants à l’aide de la méthode add(Component).

Dans le cas de JDesktopPane, le composant que l’on va ajouter est un objet de la classe JInternalFrame qui correspond aux fenêtres filles d’une application MDI.

En plus de la méthode add(), d’autres méthodes peuvent être utiles, comme :
  • JInternalFrame [] getAllFrames() : retourne une collection de JInternalFrame actuellement affichées dans le JDesktopPane.
  • setSelectedFrame(JInternalFrame f ) : rend la JInternalFrame « f » active.

Il est accéssible par le biais de la méthode getContentPane() et setContentPane(Container c) de l’interface RootPaneContainer implémentées par les conteneurs ayant un JRootPane.

4.4.5.JInternalFrame

JInternalFrame est une fenêtre qui peut être déplacée, agrandie, réduite, iconifiée, … JInternalFrame contient un JRootPane comme JFrame. On peut donc avoir accès à son glassPane, contentPane, LayeredPane, et menuBar. On va donc agir comme on le faisait avec JFrame.

Voici ci-dessous des méthodes utiles :
  • setLocation(int x, int y) définit la position de la JInternalFrame.
  • setLocationRelativeTo(null) positionne selon le centre de l’écran.
  • setSize(int,int) définit la taille de la fenêtre.
  • setDefaultCloseOperation() ici on donnera la constante :
  • HIDE_ON_CLOSE
  • DISPOSE_ON_CLOSE
  • DO_NOTHING_ON_CLOSE
  • setResizable(boolean) définit si la fenêtre peut être retaillée ou non.
  • setIconifiable(boolean) définit si la fenêtre peut être iconifiée ou no
  • setIcon(boolean) iconifie / désiconifie la fenêtre.
  • setMaximizable(boolean) définit si la fenêtre peut être agrandie ou non
  • setMaximum(boolean) maximise la fenêtre ou revient à la taille normale
  • setClosable(boolean) définit si la fenêtre peut être fermée ou non
  • setClosed(boolean) ferme la fenêtre

4.4.6.ContentPane

C’est le conteneur assosié au JRootPane des conteneurs de haut-niveau et qui contient l’ensemble des composants affichables.

4.4.7.JMenuBar

JMenuBar est une barre de menu, il ne peut en exister qu’une seule par JFrame.
Une instance de JMenuBar est composée de plusieurs instances de JMenu, qui sont les éléments visibles directement dans la barre de menus.
Chaque instance de JMenu peut contenir plusieurs instances de JMenuItem, qui sont les éléments visibles quand l’utilisateur clique sur un menu.

Voici la liste des méthodes les plus utilisées afin de construire une fenêtre avec une barre de menu :
  • Classe JMenuBar
  • JMenuBar() Constructeur unique.
  • add(JMenu) Méthode d’ajout d’un menu à la barre de menu.
  • Classe JMenu
  • JMenu() Constructeur par défaut.
  • JMenu(string s) Constructeur d’un menu avec son libellé
  • add(JMenu) Méthode d’ajout d’un JMenu au menu afin d’obtenir des sous-menus.
  • add(JMenuItem item) Méthode d’ajout d’un JMenuItem au menu
  • addSeparator() Méthode d’ajout d’une barre de séparation
  • Classe JMenuItem (Elément de menu)
  • JMenuItem() Constructeur par défaut
  • JMenuItem(string s) Constructeur d’un élément de menu avec son libellé
  • addActionListener(ActionListener al) Méthode d’ajout de Listener, permettant la gestion des évennements (nous verrons les Listener plus loin dans ce document).
  • Classe JFrame
  • setJMenuBar(JMenuBar menu) Méthode pour transmettre une barre de menu à JFrame.


Voici un exemple de représentation hiérarchique des différentes classes à utiliser. Vouc remarquerez qu’il est tout à fait possible de réaliser des sous-menus :




Descriptif 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 
41 42 43 44 45 

Retrouvez ci-dessous les autres sections du Laboratoire Sun
Exemples de code
JavaManipuler les looks and feel (lister et affecter)10/15/07
JavaFaire sa propre injection de dépendance avec les annotations5/9/06
JavaSplash screen avec progress Bar5/5/06
JavaFaire un splash screen en swing5/5/06

Essentiels de cours Java
JavaEJB 3 - Les Entreprise Java Bean version 3 (JavaBeans)
Cet essentiel est la suite de « Entreprise JavaBean 2.1 ». Cependant, nous allons étudier les nouvelles spécifications 3.0 qui simplifient énormément le développement par rapport aux EJB 2.6/20/06
JavaSWT - Créer des interfaces graphiques performantes
SWT (Standard Widget Toolkit) est une librairie graphique qui vous permet de réaliser des applications graphiques Java beaucoup plus avancées et surtout plus rapide à l’exécution.1/29/06
JavaStruts - Un framework MVC pour vos applications J2EE
Struts est un framework open-source qui vous permet de gagner du temps, mais qui permet aussi de voir des applications complexes comme une suite de composants de base : Vues, Actions, Modèles. Vous gagnez ainsi en évolutivité et en lisibilité du code.1/13/06
JavaHibernate - Persistance objet - relationnel
Cet essentiel explique comment utiliser Hibernate afin de gérer la persistance objet relationnel au sein de vos applications Java.12/14/05
JavaIntroduction J2EE - Applications d'entreprise
Cours d'introduction aux diverses technologies et outils que l'on peut rencontrer dans le monde du Java orienté entreprise J2EE12/14/05
JavaEJB 2 - Les Entreprise Java Bean (JavaBeans)
L'objectif avec EJB2 (Entreprise JavaBeans) est d'introduire les concepts de l’Ingénierie Logicielle Basée sur les Composants.12/14/05
JavaDesign Pattern - Améliorez l'architecture de vos programmes
Afin de répondre a des situation récurrentes en programmation, les "design pattern" apportent une solution type à beaucoup de contraintes liées à la programmation objet.12/14/05
JavaArchitecture J2EE - Comment organiser son application J2EE
Ce cours explique comment créer un code modulable, lisible et évolutif afin d'assurer la pérénité de son application.12/14/05
JavaLes web-services - Publication de services
Le développement tend vers les technologies du Web. Il est difficile de faire la distinction entre les différents logiciels qui sont de plus en plus intégrés au Web. Les Web Services rentrent dans l’optique de différencier bien précisément les couches.12/14/05
JavaAnt - L'automatisation des tâches du programmeur
Ecrire des scripts afin d'exécuter les tâches récurrentes10/31/05
JavaIntroduction au langage Java - Présentation & historique
Présentation des origines du langage, ainsi que se buts premiers8/11/05
JavaLa Syntaxe Java - Bases & nomenclatures
Bases de la syntaxe du langage Java8/11/05
JavaLes Classes - Concepts & héritage
Base du développement objet en Java grâce aux classes8/11/05
JavaLes Exceptions - Gestion d'erreurs
Gérer les erreurs liés à la programmation8/11/05

Articles
Eclipse Europa : le successeur de Callisto
Après Eclipse Callisto (Eclipse 3.2), la fondation Eclipse sort la nouvelle mouture d'Eclipse appelée Europa (Eclipse 3.3) faisant ainsi passer le nombre de projets embarqués de 10 à 21. Que ceux qui sont réticents aux « distributions » d'Eclipse se rassu12/21/07
JavaCruiseControl : l’outil d’intégration continue à avoir dans sa boite à outils
CruiseControl est un projet open-source offrant de multiples fonctionnalités pour l’intégration, que ce soit pour des développements Java ou .Net. Il est courant sur un projet d’être plusieurs développeurs avec des tâches de développement réparties. Dans7/2/07
JavaEJB3 - Des concepts à l'écriture du code - Editions DUNOD
Consulter le résumé du premier ouvrage du laboratoire Sun de SUPINFO : EJB3 - Des concepts à l'écriture du code. Guide du développeur, éditions DUNOD.5/27/07
JavaPassage de certification Java Web (SCWCD)
Passer une certification est toujours un moment important car cela permet de mieux faire reconnaître ses compétences face à un recruteur ou un employeur.5/12/07
JavaGoogle Web Toolkit
Google Web Toolkit est un framework java pour générer du javascript et des requêtes Ajax à partir d’un code java. Voilà comment il fonctionne.5/10/07
JavaJ2ME Vs SDE
Demain, les terminaux « légers » seront plus nombreux que les ordinateurs personnels, ce qui entraîne une bataille sur le choix d’une plateforme identique à tous ces terminaux… Aujourd’hui nous retrouvons le J2ME ainsi que le SDE qui s’offrent une rude b4/22/07

Tips du laboratoire
EclipseVisual Editor avec Eclipse Europa, c'est possible3/28/08
EclipseGérer les projets dans un workspace.10/16/07
JavaManager votre server d'application avec Eclipse4/21/07
JavaVue des sub-packages avec Eclipse4/21/07
JavaGlisser-déposer avec Eclipse4/21/07

Laboratoire SUPINFO des technologies Sun
labo-sun@supinfo.com


Conditions d'utilisation et © Copyright SUPINFO International University
23, rue de Château Landon - 75010 PARIS - Tél : +33 (0) 153359700 Fax : +33 (0) 153359701
Respect de la vie privée