Bonjour,
J'aimerais utiliser un Timer dans un actionPerformed tel que lorsqu'on appuie sur un bouton, toutes les deux secondes une image dans la fenêtre soit mise à jour jusqu'à avoir fait défiler toutes les images ou avoir appuyé sur un autre bouton (je n'ai pas encore fait cette dernière option), mais je n'arrive pas à le faire (j'ai testé de plusieurs façons qui plantent parfois..). Dans la version ci-dessous, ça met directement à la dernière image et après ça lance le timer avec la mise à jour de la JProgressBar, donc on dirait que le while est prioritaire sur le t.start() o.O. Je précise que je n'ai jamais utilisé de Timer donc je n'ai peut-être pas compris le principe ^^.
Le code, plus explicite (cf. le gras), ci-dessous :
Merci !
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71 import java.awt.event.*; import javax.swing.Timer; import javax.swing.event.*; public class ControlButton implements ActionListener { // Attributes public Model model; public Fenetre fenetre; Timer t; // Constructor public ControlButton(Model m, Fenetre f) { model = m; fenetre = f; fenetre.setButtonControler(this); } // Methods public void actionPerformed (ActionEvent e) { if (e.getSource()==fenetre.buttonv2[0]) { // First model.setIndiceVue2(0); fenetre.setLimagev2(model.getTableauImages()[model.getIndiceVue2()]); fenetre.progressbarv2.setValue(100/model.getNombre_images()); } else if (e.getSource()==fenetre.buttonv2[1]) { // Previous if (model.getIndiceVue2() > 0) { model.setIndiceVue2(model.getIndiceVue2()-1); fenetre.setLimagev2(model.getTableauImages()[model.getIndiceVue2()]); fenetre.progressbarv2.setValue(fenetre.progressbarv2.getValue()-100/model.getNombre_images()); } } else if (e.getSource()==fenetre.buttonv2[2]) { // Play initTimer(); while (model.getIndiceVue2() < model.getNombre_images()) { model.setIndiceVue2(model.getIndiceVue2()+1); fenetre.setLimagev2(model.getTableauImages()[model.getIndiceVue2()]); t.start(); } } else if (e.getSource()==fenetre.buttonv2[3]) { // Next if (model.getIndiceVue2() < model.getNombre_images()) { model.setIndiceVue2(model.getIndiceVue2()+1); fenetre.setLimagev2(model.getTableauImages()[model.getIndiceVue2()]); fenetre.progressbarv2.setValue(fenetre.progressbarv2.getValue()+100/model.getNombre_images()); } } else if (e.getSource()==fenetre.buttonv2[4]) { // Last model.setIndiceVue2((model.getNombre_images())-1); fenetre.setLimagev2(model.getTableauImages()[model.getIndiceVue2()]); fenetre.progressbarv2.setValue(100); } } public void initTimer() { t=new Timer(1000,new ActionListener() { public void actionPerformed(ActionEvent e) { if (fenetre.progressbarv2.getValue() < 100) { fenetre.progressbarv2.setValue(fenetre.progressbarv2.getValue()+100/model.getNombre_images()); } else { t.stop(); } } }); } }
Partager