J'ai testé le code suivant en suivant d'ailleurs un totu du site, qui me dit que les élémens graphgiques doivent être exécutés dans l'EDT, donc j'ai mis tout ce qui concerne la réactualisation graphique dans des SwingUtilities.invokeLater(...)
Je veux que mon Thread Calcul (la classe Calcul étend Thread) se stoppe lors de l'appui sur le bouton
Voici mon code:
L'interface graphique comporte des boutons :
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 public void run() { final int [] finalInt =new int[1]; finalInt[0]=nombre; while(true) { finalInt[0]++; Runnable code=new Runnable() { public void run() { essai.getLabel().setText("The Number is : "+finalInt[0]); } }; try{ SwingUtilities.invokeAndWait(code); }catch(InvocationTargetException ite) {ite.printStackTrace();} catch(InterruptedException ie) {ie.printStackTrace();} essai.setNombre(finalInt[0]); } }
Il n'y a pas de messages d'erreurs en faisant start puis pause, mais le Thread ne s'arrête pas et continue de s'exécuter.
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")) { calcul.start(); } if(arg0.getActionCommand().equals("Pause")) { synchronized(calcul) { try{ wait(); }catch(InterruptedException ie) {ie.printStackTrace();} } } if(arg0.getActionCommand().equals("ReStart")) { synchronized(calcul) { calcul.notify(); } } }
Quelqu'un pourrait-il me donner un coup de main pour comprendre le problème?
Merci vivement d'avance :-)
Partager