TD JAVA : IHM Animée - Site d`Emmanuel Adam

publicité
TD JAVA : IHM Animée
En utilisant un objet Timer propageant des événements (voir annexe), donner le code permettant de dessiner
une horloge (possédant une grande, moyenne et petite aiguille).
x1
x
y1
Ө
y0
x0
y
Fig1. Coordonnées trigonométriques
Fig 2. Copie d'écran de l'horloge
Quelques remarques :
L'ordre trigonométrique est inverse à celui des aiguilles.
L'ordonnée est croissante vers le bas.
Pour un angle teta donné, pour un rayon R donné, la position de x1, y1, coordonnées finale de
l'aiguille sont :
x1 = x0 + R x sin(teta)
y1 = y0 - R x cos(teta)
Il faudra donc utiliser trois angles différents, chacun correspondant aux heures, minutes et secondes,
ainsi que bien sur trois rayons différents.
Rappel : la fonction utilisée pour tracer une ligne est drawLigne(x0, y0, x1, y1) de la classe Graphics.
En java, pour animer une IHM, il est possible d'utiliser un Timer (javax.swing.Timer)
Exemple :
class Ardoise extends JPanel implements ActionListener
{
Timer timer;
...
Ardoise()
{
...
timer = new Timer(100, this); // definition d'un timer de 100 ms
...
}
}
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == timer) // reception de l'événement déclenché par le Timer.
{ ...
repaint();
}
...
}
public void paintComponent(Graphics g)
{ ...
}
Téléchargement