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
- Écrire une classe SimpleFrame permettant d'afficher une
fenêtre. Nous utiliserons pour cela la classe javax.swing.JFrame.
On lui donnera simplement :
- un titre (voir le constructeur ou setTitle())
- une taille minimale (setSize())
Puis on l'affichera via la commande show().
- 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().
- 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 :
- un bouton (JButton)
- un champ de texte (JTextField)
- une zone de texte (JTextArea)
- une série de boutons à cocher (JCheckBox)
Utiliser pour cela un panel (Panel) auxiliaire
contenant l'ensemble des checkbox.
- une série de boutons radio (JRadioButton)
- Ajouter une bulle d'aide contextuelle (setTooltipText())
sur le bouton.
- Rendre le bouton inopérent (setEnable())
- Changer la couleur du texte et du fond du bouton
(setForeground() et setBackground()).
Attention à la transparence par défaut (setOpaque()).
- Ajouter un texte dans le champ de texte et dans la zone de texte.
(setText())
- Rendre le champ de texte non éditable (setEditable()))
- 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).
- 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.
- 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 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.
- Créer trois boutons Cut, Copy et Paste
- Associer (setIcon()) une image (ImageIcon) à chaque
bouton.
- Créer une barre de d'outil (JToolBar)
- 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 ?
- 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.
-
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 :).