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
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
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 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
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; } }
Si quelqu'un a une idée, je suis preneur.
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(); } }
Merci pour votre aide, Bonne journée







Répondre avec citation
Partager