Interfaces Graphiques avec Java

TD 1

Composants simples: fenêtres, panneaux, boutons, labels.
Évènements de fenêtres, de boutons.
Champs de texte


Exercice 1 - Une simple Frame

  1. Écrire une classe SimpleFrame permettant d'afficher une fenêtre. Elle pourra hériter, dans un premier temps, de la classe javax.swing.JFrame. On lui donnera simplement un titre et une taille initiale avant de l'afficher (show()).
  2. Ajouter à cette fenêtre un label, composant de la classe JLabel, représentant une étiquette (un texte court). Le conteneur d'une frame dans lequel on peut ajouter quelque chose est récupéré par la méthode getContentPane().
  3. Remplacer l'ajout de label par l'ajout d'un bouton "OK", de la classe JButton. Que se passe-t-il si le bouton est ajouté en plus du label, au lieu de le remplacer?
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 panneau de la classe JPanel, puis ajouter le panneau dans le contentPane de la fenêtre JFrame.

Modifier l'exemple SimpleFrame en ce sens.


Exercice 2 - Les écouteurs d'évènements des fenêtres

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, 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.

Exercice 3 - Associer des actions aux boutons

Créer une classe ButtonPanel, qui hérite de JPanel et dont une instance sera intégrée dans le contentPane d'une JFrame visualisant l'ensemble. La classe ButtonPanel contient:
  1. Un bouton "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.
  2. Trois boutons, "Rouge", "Vert" et "Bleu", qui permettent lorsqu'ils sont utilisés de changer la couleur de fond.

Exercice 4 - Créer et détruire dynamiquement des boutons

On souhaite écrire un programme qui affiche une fenêtre dans laquelle des boutons vont dynamiquement apparaître ou disparaître. Plus précisément, écrire successivement du code permettant le comportement suivant:
  1. Initialement, un seul bouton "New" est présent. Un clic sur ce bouton fait apparaître un nouveau bouton étiqueté avec un texte contenant un numéro d'ordre de création.
  2. Ensuite, un clic sur l'un de ces boutons doit le faire disparaître.
  3. Enfin, un troisième type de bouton, "Reset", permet lorsqu'il subit un clic de faire disparaître tous les boutons crées, ne laissant que les deux boutons initiaux "New" et "Reset".
Ajouter des bulles d'aide contextuelles (ToolTip) aux trois types de boutons. Pour cela, utiliser la méthode setToolTipText.

Faire maintenant en sorte que lorsque le bouton "Reset" a été utilisé, le bouton "New" crée des boutons numérotés à partir de 1 (réinitialisation du compteur).


Exercice 5 - Champs de texte

Imaginez la petite application suivante: l'utilisateur entre des valeurs dans une zone de texte d'une fenêtre. Lorsque l'utilisateur valide par entrée, le texte est affiché dans un label de la même fenêtre seulement s'il correspond à une date (utiliser java.text.DateFormat).
Etienne.Duris[at]univ-mlv.fr - Rémi.Forax[at]univ-mlv.fr - © Université de Marne-La-Vallée - Décembre 2000