Bonjour,

Je vous contacte car j'ai des soucis avec la mise au point de Thread gérant l'affichage d'éléments graphiques et ces éléments. Je veux créer un compteur qui puisse s'arrêter et se remettre en marche sans bloquer l'interface graphique. Celle-ci consite en trois boutons (start/concel pour les pauses et restart pour reprendre le calcul) Il y a un tutoriel sur ce sujet dans ce site, et je m'y suis inspiré pour écrire le code suivant:

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
public void actionPerformed(ActionEvent arg0)
	{
		if(arg0.getActionCommand().equals("Start"))
		{
			doSomething();
		}
		if(arg0.getActionCommand().equals("Pause"))
		{
			synchronized(calcul) {
				try{
					wait();
				}catch(InterruptedException ie) {ie.printStackTrace();}
			}
		}
		if(arg0.getActionCommand().equals("ReStart"))
		{
			synchronized(calcul) {
				calcul.notify();
			}
		}
	}
Avec la méthode doSomething:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
public void doSomething() {
		Runnable code=new Runnable() {
			public void run() {
				calcul.start();
			}
		};
		if(SwingUtilities.isEventDispatchThread()) {
			code.run();
		} else {
			SwingUtilities.invokeLater(code);
		}
	}
Le Thread en question est créer dans une autre classe Calcul qui étend Thread. Voici la méthode run():

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
public void run()
	{
	    int monInt=nombre;
	    while(true)
	    {
	    	monInt++;
			essai.getLabel().setText("The Number is : "+monInt);
			essai.setNombre(monInt);
	    }
	}
Pourtant, rien ne se passe lorsque j'appui sur le bouton cancel.
Quelqu'un pourrait-il m'aider?
Merci d'avance :-)