Problème avec le timer d'un tri à bulles
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:
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);
} |
Code:
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...) |
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.
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 !