Bonjour,

J'ai un lecteur de musique, et mon JSlider qui doit avancer en suivant la musique (classique quoi).

Alors j'ai une boucle while qui tourne tout le long de la chanson :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
while (!player.isComplete()) 
			{
				slider.setValeur(player.getPosition());
				try 
				{
					Thread.sleep(1000);					
				} 
				catch (Exception e)
				{
					e.printStackTrace();
				}
			}
Cette boucle appelle donc toutes les secondes la méthode setValeur, qui appelle elle-même la méthode setValue de JSlider à partir d'un Thread :

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
 
public class Curseur extends JPanel
{
        public void setValeur(int i)
	{
		SliderThread pt = new SliderThread(i);
		pt.start();
	}
 
	class SliderThread extends Thread 
	{
		int val;
 
		public SliderThread (int i)
		{
			val = i;
		}
 
		public void run() 
		{
			slider1.setValue(val);
		}
	}
}
(Je mets que le code nécessaire)

Le truc c'est que ça marche aléatoirement, parfois ça se bloque même en plein milieu etc...

Quelqu'un aurait une méthode efficace, ou pourrait trouver l'erreur dans mon code?

Merci d'avance!