Dessiner sous Java

Un peu d'animation

Maintenant qu'on sait modifier l'aspect du composant en cours de programme, il est très simple de créer une animation : il suffit de modifier l'aspect du composant à intervalles réguliers.

L'outil adapté pour cela est la classe Timer de la bibliothèque javax.swing, associée aux outils de la bibliothèque java.awt.event.
Un Timer déclenche à intervalle régulier l'action qu'on lui associe.

Principe général pour déclencher une action toutes les n millisecondes:

Timer horloge=new Timer(n ,new ActionListener(){
  public void actionPerformed(ActionEvent e){
.... Action à effectuer 
  }
});
Le Timer est mis en marche par l'instruction
horloge.start(); 

Par exemple, Appel peut ressembler à cela (en supposant que Fenetre crée un panneau de type PanneauPerso3) :

import java.awt.*;
import java.awt.event.*;
import javax.swing.Timer;

public class Appel {
	static int d;
	public static void main(String[] args) {
	final Fenetre une_fenetre=new Fenetre();
	final Graphics2D g=une_fenetre.panneau.dessin.createGraphics();
	d=(int)(500*Math.sqrt(2));
	Timer horloge=new Timer(8,new ActionListener(){
	  public void actionPerformed(ActionEvent e){
	    // actions à exécuter toutes les 8ms
		g.setColor(new Color(60,80,128));
		g.fillRect(0,0,500,500);
		g.setColor(Color.yellow);
		g.drawOval((500-d)/2,(500-d)/2,d,d);
		d=d-2;
		if (d<2){
		  d=(int)(500*Math.sqrt(2));
		}
		une_fenetre.panneau.repaint();
		// fin des actions déclenchées par le Timer    
	  }
	});
	horloge.start(); 
     }
}
Toutes les 8ms le Timer appelé horloge déclenche le remplissage de l'image(ce qui efface le dessin précédent) et le tracé d'un cercle de diamètre d. La valeur de d est modifiée à chaque passage. La méthode repaint du panneau est appelée pour actualiser le dessin à chaque passage (à ne pas oublier !).
 
Licence Creative Commons
licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé
Auteur : Nathalie Bonnin
Professeur de Physique, Chimie, Informatique au lycée La Martinière Monplaisir (Lyon 8ème)
Contact :
nathalie.bonnin (chez) scientillula.net
Licence Creative Commons
La totalité du contenu du site Scientillula.net appartient à Nathalie Bonnin et est mise à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé