:: Enseignements :: ESIPE :: E4INFO :: 2011-2012 :: Interface graphique ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Groupe de boutons, menus, auditeurs et barres d'outils - Correction |
Exercice 1 - Groupe de boutons
On souhaite créer un panneau contenant boutons radio
(JRadioButton) étiquetées "Anton", "Yvan", "Boris" et
"moi".
On veut faire en sorte qu'il n'y ait qu'un seul bouton radio
sélectionné à la fois.
Pour cela, nous utiliserons la classe ButtonGroup
qui permet de créer un groupe logique de boutons.
Exercice 2 - Exemple de Gestionnaire de géométrie
Écrire une classe LayoutExample permettant de visualiser,
dans des fenêtres internes de classe JInternalFrame,
les gestionnaires de géométrie
gérés par les classes :
-
FlowLayout, utilisé par défaut dans les JPanel ;
-
GridLayout, utilisé pour répartir les composants dans
une grille régulière ;
-
BorderLayout, utilisé par défaut dans le
contentPane des JFrame, il permet
d'indiquer une contrainte de placement
(NORTH, SOUTH, EAST,
WEST et CENTER) ;
-
BoxLayout, utilisé dans les barres d'outils, il aligne les composants dans une
boîte suivant un axe choisi (X_AXIS pour l'axe
horizontal et Y_AXIS pour l'axe vertical).
Une JInternalFrame est une fenêtre logée à l'intérieur
de la fenêtre principale (JFrame).
Il n'est malheureusement pas possible d'ajouter directement
une fenêtre interne à une JFrame. Il faut utiliser
un conteneur JDesktopPane comme parent de n'importe quelle
JInternalFrame.
Ce desktop jouera donc le rôle de contentPane
auprès de la JFrame.
Un JInternalFrame s'utilise comme une JFrame, et possède
donc un contentPane. Attention, elle n'est pas visible par défaut.
JFrame frame=new JFrame();
JDesktopPane desktop=new JDesktopPane();
frame.setContentPane(desktop);
JInternalFrame iframe=new JInternalFrame();
iframe.setVisible(true);
desktop.add(iframe);
Container c=iframe.getContentPane();
c.add(new JButton("hello"));
Dans un premier temps, essayer de redimensionner chacune des
JInternalFrame pour
observer le comportement du gestionnaire de géométrie.
Dans un second temps, insérer
des appels à la méthode pack() sur chacune de ces
JInternalFrame avant de les ajouter au JDesktopPane
et observer l'effet de ces appels.
Exercice 3 - Les Menus
Dans une nouvelle fenêtre JFrame, nous allons ajouter des menus.
-
Créer une barre de menu (JMenubar).
-
Ajouter un menu "File" (JMenu).
-
Ajouter deux items "Open" et "Save" (des JMenuItem)
au menu "File" (à l'aide de la méthode add()).
-
Puis ajouter le menu "File" à la barre de menu.
-
Enfin, ajouter la barre de menu à la fenêtre (setJMenuBar()).
Dans un second temps, ajouter un sous-menu contenant des boutons à cocher
(JCheckBoxMenuItem), puis les grouper (se souvenir des
ButtonGroup).
Exercice 4 - La barre d'outils
Dans une nouvelle fenêtre, nous allons ajouter une barre d'outils.
Pour cela, nous allons auparavant créer des boutons
pour les ajouter à l'intérieur de la barre d'outils.
-
Créer une barre de d'outil (JToolBar).
Créer trois boutons "Cut", "Copy" et "Paste" puis
les ajouter à la barre d'outils.
Placer cette dernière en haut de la fenêtre.
-
Associer (setIcon()) une image (ImageIcon)
à chaque bouton.
Dans cet exercice, les boutons n'effectueront aucune action.
Exercice 5 - Le GridbagLayout
Écrire une classe permettant d'afficher un formulaire EXACTEMENT identique à celui ci-dessous.
Pour cela, on veut utiliser les classes GridBagLayout et
GridBagConstraints.
Plutôt que de paramétrer le GridBagLayout avec la
méthode setContraints,
comme dans la documentation, on utilisera le technique
normale des LayoutManager2 en passant un objet
de type GridbagContraints comme second argument
de la méthode add du composant.
-
Créer un GridBagLayout afin de le positionner comme
gestionnaire de layout du contentPane de la JFrame.
-
Créer les différents composants nécessaires pour votre formulaire
(JCheckBox, JTextField, JButton,
JComboBox, etc.).
-
Découpez les différentes parties de votre formulaire et ajoutez
dans le contentPane les différents composants en spécifiant, pour
chacun d'entre eux, les paramètres distincts du layout à l'aide d'un
objet GridBagConstraints. Pour bien voir le comportement de chaque composant du
formulaire, essayez de redimensionner la fenêtre.
Exercice 6 - À la maison...
Écrire le code d'un gestionnaire de géométrie sans contraintes (implémantant
l'interface LayoutManager), plaçant les composants en spirale,
leur largeur ou leur hauteur étant égale à leur taille préférée, et l'autre
mesure tendue au maximum. On n'affichera pas les composants qui ne tiennent
pas dans la fenêtre.
© Université de Marne-la-Vallée