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:
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
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(); } } }
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
11
12 public void doSomething() { Runnable code=new Runnable() { public void run() { calcul.start(); } }; if(SwingUtilities.isEventDispatchThread()) { code.run(); } else { SwingUtilities.invokeLater(code); } }
Pourtant, rien ne se passe lorsque j'appui sur le bouton cancel.
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); } }
Quelqu'un pourrait-il m'aider?
Merci d'avance :-)
Partager