Salut,
j'ai un projet à faire sur les graphes, donc j'ai créé un interface en swing permettant d'ajouter un sommet une arete entre deux sommets j'utilise une JFrame et je dessine dans un JPanel.Une fois tout ça créé mon programme permet de calculer le plus court chemin entre deux points. Maintenant je voudrais faire avancé une boule sur mes aretes pour montrer le chemin. J'ai donc créé une classe boule dans laquelle j'ai mis une thread :
La boule avance bien mais elle scintille je ne vois pas pourquoi, faut il que j'utilise plutot Graphics2D? Est ce le double buffering la solution? (Il parait que dans JPanel l'utilise par default).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 public void run() { Sommet s = this.graphe.rechercheSommet(x,y).leSommet; while(s.predecesseur != null) { double xa = s.x+(Sommet.largeurSommet/2); double ya = s.y+(Sommet.largeurSommet/2); double xd= s.predecesseur.leSommet.x+(Sommet.largeurSommet/2); double yd = s.predecesseur.leSommet.y+(Sommet.largeurSommet/2); double m=(yd-ya)/(xd-xa); double p=(ya)-(m*xa); if (xa<xd){ for ( int i=(int)xa;i<(int)xd;i++) { try { sleep(50); } catch (InterruptedException e){ } this.p.repaint(); g.setColor(Color.RED); g.fillOval(i-10,(int)(m*i+p)-10,20,20); } s = s.predecesseur.leSommet; } else { for ( int i=(int)xa;i>(int)xd;i--) { try { sleep(50); } catch (InterruptedException e){ } this.p.repaint(); g.setColor(Color.RED); g.fillOval(i-10,(int)(m*i+p)-10,20,20); } s = s.predecesseur.leSommet; } } }
je vous remercie d'avance pour vos réponses.
Partager