Soucis intégration Thread/Swing
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:
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:
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:
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 :-)