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).
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)
{ ...
}
}