Bonsoir,
J'ai un problème que je n'arrive pas à résoudre (et c'est pas faute d'avoir cherché...) :
Je désire donc faire un tri à bulles, avec plusieurs Jlabel qui doivent switcher de place au fur et à mesure du tri, de facon animée (progressive).
J'ai fait ceci :
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 public void fctTri() { sauve=10; do { drap=0; sauve=sauve-1; for(i=0;i<sauve;i++) { if(tableau[i]>tableau[i+1]) { tempor=tableau[i]; tableau[i]=tableau[i+1]; tableau[i+1]=tempor; sens=i; phase=1; tempo(delai); drap=1; } } }while(drap==1); }quand je fait appel à tempo(delai) par un bouton (sans passer par la fonction de tri), les label changent bien de place, et il sort de la boucle lorsque phase arrive à 30.
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 public void tempo(int temps) { timer = new javax.swing.Timer(temps, new ActionListener() { public void actionPerformed(ActionEvent e) { timer.stop(); switch(sens) { case 0: if(phase==30) { yLabel0=50; yLabel1=80; Label0.setVisible(false); Label1.setVisible(false); Label0.setBounds(xLabel, yLabel0, 80, 30); Label1.setBounds(xLabel, yLabel1, 80, 30); timer.stop(); } else { yLabel0=yLabel0+1; yLabel1=yLabel1-1; Label0.setVisible(true); Label1.setVisible(true); Label0.setBounds(xLabel, yLabel0, 80, 30); Label1.setBounds(xLabel, yLabel1, 80, 30); phase=phase+1; tempo(delai); } break; (etc...)
Mais que je fait de même dans la fonction de tri, il ne stoppe pas le timer, 'phase' reste toujours à 30...
Quelqu'un a une idée ?
(note : je sais pas si tout ca est très clair, je m'en excuse d'avance. Demandez-moi si il faut éclaircir quelque chose =) )
Merci !
Partager