Bonjour
Je suis entrain de créer une application en utilisant SWING en java.
J'ai un bouton "start" qui permet d'exécuter un programme avec timer de quelque seconde.
Maintenant, je souhaite créer un bouton "arret" qui permet de l' arrêter mais je ne sais pas vraiment comment le faire.

Voila mon code:

Classe main : cette classe permet d'instancier la classe timer et recuperer un evenement

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
25
26
27
28
29
30
31
32
33
34
35
36
 
 
public class main extends JFrame implements ActionListener {
 
private PropertyChangeListener listener = new PropertyChangeListener() {
 
		@Override
		public void propertyChange(PropertyChangeEvent evt) {
			switch (evt.getPropertyName()) {
 
				case "RESPONSE":
 
                               TextField.setText((String) evt.getNewValue());
}
 
.......				
 
public static void main(String[] args) throws IOException {
 
		main = new Main();
		main.setVisible(true);
 
	}
 
public void actionPerformed(ActionEvent e) {
Object bouton = e.getSource();
 
if (bouton == buttonExecuteTimer) {
 
	ProcessorTimer worker = new ProcessorTimer();
	worker.addPropertyChangeListener(listener);
	worker.execute();
 
}
 
.....
Classe timer==>

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
25
26
27
28
 
 
public class ProcessorTimer extends SwingWorker<Void, Void> {
 
.......
 
protected Void doInBackground() throws Exception {
 
......
 
TimerTask timerTask = new HealthProcessorTaskTimer(new ICallback() {
 
			@Override
			public void result(String result) {   
 
				firePropertyChange("RESPONSE", null,result);
 
		});
 
 
		Timer timer = new Timer(true);
 
		timer.scheduleAtFixedRate(timerTask, 0, 2000);
		System.out.println("Lancement execution");
 
		return null;
	}	
}
Classe TIMERTASK ==>

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 ProcessorTaskTimer extends TimerTask {
...
 
public void run() {
 
		....	
 
		this.callback.result(response.getString());
 
		try {		
			Thread.sleep(5000);
		} catch (InterruptedException e) {
 
			e.printStackTrace();
 
		}		
	}
 
	public ProcessorTaskTimer() {
		super();
	}
}
Si quelqu'un a une idée, je suis preneur.
Merci pour votre aide, Bonne journée