Interfaces Graphiques en Java
TD 1

Composants simples: fenêtres, panneaux, boutons, labels, menus, toolbars, etc. Évènements de fenêtres, de boutons.

Le but de ce TD consiste à créer une fenêtre graphique avec des bordures. Puis dans un second temps à decouvrir comment ajouter un ensemble de composants simples à celle-ci.


Exercice 1 : SimpleFrame

  1. Écrire une classe SimpleFrame permettant d'afficher une fenêtre. Nous utiliserons pour cela la classe javax.swing.JFrame.
    On lui donnera simplement : Puis on l'affichera via la commande show().
  2. Dans un second temps, ajouter à cette fenêtre un label (JLabel), représentant une étiquette (un texte court).
    Pour récuperer le conteneur permettant d'ajouter des composants à une fenêtre nous utiliserons la méthode getContentPane().
  3. Puis, ajouter un bouton "OK" (JButton) en plus du label.
    Que se passe-t-il ? Comment faire pour que le label ne disparaisse pas.

Exercice 2 : SimpleFrame2 et Découpage objet

D'une manière générale, on n'ajoute pas directement des composants dans le contentPane d'une fenêtre JFrame. On préfère spécifier l'ensemble des composants désirés dans un panel (JPanel), puis indiquer que ce pannel est le nouveau contentPane (via la commande setContentPane()) de la fenêtre JFrame.

Modifier l'exemple SimpleFrame en ce sens.


Exercice 3 : À la découverte de nouveaux composants

Créer une nouvelle JFrame nommée Découverte et ajouter dans son contentPane les composants suivant :

  1. Ajouter une bulle d'aide contextuelle (setTooltipText()) sur le bouton.
  2. Rendre le bouton inopérent (setEnable())
  3. Changer la couleur du texte et du fond du bouton (setForeground() et setBackground()).
    Attention à la transparence par défaut (setOpaque()).
  4. Ajouter un texte dans le champ de texte et dans la zone de texte. (setText())
  5. Rendre le champ de texte non éditable (setEditable()))
  6. Ajouter une bordure aux séries de boutons (le méthode est setBorder(), en fournissant un objet de type java.swing.border.Border créé via les méthodes de la classe java.swing.BorderFactory).
  7. S'arranger pour qu'un seul des checkbox soit enfoncé à la fois.
    Il faut pour cela définir un groupe logique de boutons (ButtonGroup), et ajouter chaque checkbox au groupe de boutons.

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 au autre menu contenant des checkboxs (JCheckBoxMenuItem). Puis grouper les.

Exercice 4 : La barre d'outils

Dans une nouvelle fenêtre JFrame, nous allons ajouter une barre d'outil. Pour cela, nous allons auparavant créer les boutons contenant des images pour mettre ceux-ci à l'intérieur de la barre d'outils.

  1. Créer trois boutons Cut, Copy et Paste
  2. Associer (setIcon()) une image (ImageIcon) à chaque bouton.
  3. Créer une barre de d'outil (JToolBar)
  4. Ajouter les trois boutons à la barre d'outil (avec un add(new Button("North"), BorderLayout.NORTH), pour plus d'info voir la doc de java.awt.BorderLayout).

Exercice 5 : Associer des actions aux boutons

Créer une fenêtre contenant un bouton de label "Test" qui, lorsqu'il reçoit un clic, affiche "Test clic" dans la fenêtre de contrôle (console ou xterm).
Pour cela, il faut créer le bouton, puis lui ajouter, par la méthode addActionListener() un écouteur implantant l'interface ActionListener, dont la méthode actionPerformed() effectue l'affichage dans la fenêtre de contrôle.

Utiliser la même technique avec trois boutons, "Rouge", "Vert" et "Bleu", qui permettent de changer la couleur de fond.
Produire un code qui permette de rajouter facilement une nouvelle couleur.


Exercice 6 : Évènement de fenêtre

Dans l'ensemble des exemples précédents, que se passe-t-il lorsqu'on ferme la fenêtre ?

  1. Pour terminer proprement l'application lorsqu'on ferme la fenêtre, pour cela, faire implanter à la frame la méthode windowClosing() de l'interface java.awt.event.WindowListener. Afin d'éviter de donner un code vide pour toutes les autres méthodes de WindowListener, utiliser un WindowAdapter.
  2. De la même manière, faire en sorte que la couleur de fond de la fenêtre soit verte lorsqu'elle est active et rouge lorsqu'elle est inactive (méthode windowActivated et windowDeactivated, attention il n'y a pas de 's').

Il existe une façon plus simple (à partir du JDK1.3) pour fermer proprement une fenêtre en utilisant la méthode setDefaultCloseOperation() de la classe JFrame (voir la doc :).


Rémi Forax 2000 Université de Marne la Vallée