Bonjour,
Voici mon problème :
J'ai créé un programme qui affiche une animation.
(une simulation de l'interaction gravitationnelle entre plusieurs astres. On voit les astres se déplacer en laissant une trainée derrière pour ainsi voir la trajectoire).
J'ai donc créé une classe qui implémente l'interface runnable et je lance un thread associé à un objet de cette classe. J'ai deux possibilités pour ma méthode run.
Si ma méthode run est:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
public void run() {	
          while(true){
            g = (Graphics2D)sys.panSys.getGraphics();
	sys.panSys.repaint();
     }
}
Alors l'animation s'effectue mais c'est l'animation n'est pas fluide. On voit les objets se déplacer, puis sa s'arrête une seconde, puis ça repart. Et ainsi de suite. Pourquoi est-ce saccadé ?

Si j'implémente run de la manière suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
public void run() {
          Graphics2D g;	
 
          while(true){
		g = (Graphics2D)sys.panSys.getGraphics();
		sys.panSys.paint(g);
		}
	}
Là ça marche bien. Mais d'une part je lis de partout que l'on ne doit pas appelé paint directement, de plus quelquefois ça plante.

Alors laquelle des deux choisir et comment corriger les problèmes dans les deux cas.
Merci de m'éclairer.