Interfaces Graphiques avec Java
TD 4
Exercice 1
- Un peu de dessin
- Écrire une classe SimpleDessin, héritant de
JFrame. On positionnera, dans le contentPane de
cette frame, une instance d'une classe DessinPanel, héritant
de JPanel. Les dessins seront alors spécifiés en
redéfinissant la méthode paintComponent() dans
DessinPanel.
- Spécifier, via cette méthode, le dessin à différents
endroits de la fenêtre:
- d'un texte écrit avec la couleur par défaut (drawString()),
- du contour d'un rectangle dessiné en rouge (drawRect()
et setColor()),
- d'un oval plein dessiné en vert (fillOval()),
- d'une ligne dessinée en bleu (drawLine()).
où les méthodes entre parenthèses doivent être appelées sur l'objet
graphique (java.awt.Graphics) argument de la méthode
paintComponent(). Comment épaissir le trait de la ligne bleue?
- Positionner la couleur de fond du dessin comme étant jaune.
Exercice 2
- Dessiner des images
On veut maintenant dessiner une image (gif ou
jpeg, par exemple) accessible dans le répertoire courant.
- Récupérer l'objet Toolkit courant par la méthode
statique getDefaultToolkit() de la classe
java.awt.Toolkit).
- Récupérer cette image sous la forme d'un objet de la classe
Image (utiliser pour cela la méthode getImage() qui
accepte un nom de fichier ou un objet URL.
-
Dessiner cette image dans la fenêtre grâce à la méthode
drawImage().
-
Faire de même avec une image récupérée à partir d'un URL (par exemple,
new URL("http://www-igm.univ-mlv.fr/~duris/logo.gif")).
Exercice 3
- Changer de look & feel
Le laf (look and feel) utilisé dans les interfaces graphiques
de Swing est modifiable dynamiquement (pluggable). Trois
plaf existent actuellement: ceux de Motif et de
Windows plus celui de Swing utilisé par défaut, appelé
Metal.
Créer, comme pour le dernier exercice, trois boutons "Motif",
"Windows"et "Metal" permettant de changer dynamiquement le Look and
Feel. La méthode setLookAndFeel() de la classe
javax.swing.UIManager permet de positionner un plaf
particulier, représenté par une String, dont les valeurs
peuvent être les suivantes:
- "javax.swing.plaf.metal.MetalLookAndFeel" (par défaut)
- "com.sun.java.swing.plaf.motif.MotifLookAndFeel"
- "com.sun.java.swing.plaf.windows.WindowsLookAndFeel"
Une fois positionné, le plaf est pris en compte par un appel à la
méthode statique updateComponentTreeUI() de la classe
SwingUtilities.
Exercice 4
- Horloges
On veut développer des petites applications qui gèrent le calcul et
l'affichage d'horloges, avec différentes fonctionalités.
- Un simple cercle, avec trois lignes de longueurs différentes pour
les heures, les minutes et les secondes.
- Ajouter autour du cercle 60 petits traits représentant les
minutes.
- Vous pouvez utiliser pour les aiguilles les images suivantes:
,
,
,
,
.
On utilisera pour cela, entre autres, la classe
javax.swing.Timer et les méthodes rotate()
translate() scale() de Graphics2D.
Afin de tester les trois configurations demandées on pourra
imaginer une situation ou le nombre d'horloges affichées peut
augmenter ou diminuer sur simple click de boutons.