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
- É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()).
- 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().
- 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?
- 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.
-
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:
- 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.
- 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:
- 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.
- Ensuite, un clic sur l'un de ces boutons doit le faire disparaître.
- 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).