Interfaces Graphiques avec Java

TD 4


Exercice 1 - Un peu de dessin

  1. É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.
  2. Spécifier, via cette méthode, le dessin à différents endroits de la fenêtre: 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?
  3. 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.

  1. Récupérer l'objet Toolkit courant par la méthode statique getDefaultToolkit() de la classe java.awt.Toolkit).
  2. 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.
  3. Dessiner cette image dans la fenêtre grâce à la méthode drawImage().
  4. 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:

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.

  1. Un simple cercle, avec trois lignes de longueurs différentes pour les heures, les minutes et les secondes.
  2. Ajouter autour du cercle 60 petits traits représentant les minutes.
  3. 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.


Etienne.Duris[at]univ-mlv.fr - Rémi.Forax[at]univ-mlv.fr - © Université de Marne-La-Vallée - Janvier 2001