:: Enseignements :: ESIPE :: E4INFO :: 2011-2012 :: Interface graphique ::
[LOGO]

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 :

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.

  1. Créer une barre de menu (JMenubar).
  2. Ajouter un menu "File" (JMenu).
  3. Ajouter deux items "Open" et "Save" (des JMenuItem) au menu "File" (à l'aide de la méthode add()).
  4. Puis ajouter le menu "File" à la barre de menu.
  5. 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.

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.

  1. Créer un GridBagLayout afin de le positionner comme gestionnaire de layout du contentPane de la JFrame.
  2. Créer les différents composants nécessaires pour votre formulaire (JCheckBox, JTextField, JButton, JComboBox, etc.).
  3. 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.