Bonjour, donc voici mon code Chronos.java :
Donc tout d'abord ce programme créé une interface, avec un JTabbedPane, et un onglet, contenant un bouton.
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107 import javax.swing.*; import java.awt.event.*; import java.awt.*; public class Chronos extends JFrame implements ActionListener { static int nbOnglets; public JTabbedPane lesChronos = new JTabbedPane(); JPanel mainPanel = new JPanel(); JButton ajChrono = new JButton("Nouvel Onglet"); public Chronos() { super("JavaChronos"); setSize(500, 400); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ajChrono.addActionListener(this); mainPanel.add(ajChrono); lesChronos.addTab("Main", mainPanel); getContentPane().add(lesChronos); setVisible(true); } public static void main(String[] arguments) { new Chronos(); } public void actionPerformed(ActionEvent event) { AjoutChrono(); } public void AjoutChrono() { TimePanel newChrono = new TimePanel(); lesChronos.addTab("Onglet n° "+nbOnglets, newChrono); nbOnglets++; } } class TimePanel extends JPanel implements ActionListener { JLabel temps = new JLabel("00:00:00"); int h, m, s; boolean started; JButton start = new JButton("Start !"); JButton stop = new JButton("Stop !"); JButton raz = new JButton("RAZ"); public TimePanel() { super(); this.started=true; add(temps); add(start); add(stop); add(raz); start.addActionListener(this); stop.addActionListener(this); raz.addActionListener(this); try{ Thread.sleep(1000); } catch(InterruptedException ie) { } Timer(); } public void actionPerformed(ActionEvent event) { Object source = event.getSource() ; if(source==start) {this.started=true; } if(source==stop) {this.started=false; } if(source==raz) { int reponse = JOptionPane.showConfirmDialog(this, "Etes-vous sûr de vouloir remettre à zéro ?", "Attention...", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); } } public void Timer() { if(this.started) { this.s++; if(this.s>=60) { this.s=0; this.m++; } if(this.m>=60) { this.m=0; this.h++; } temps.setText(""+this.h+":"+this.m+":"+this.s); try{ Thread.sleep(1000); } catch(InterruptedException ie) { } Timer(); } } }
Lorsque on clique sur le bouton, on créé un nouvel objet TimePanel, qui renvoie un JPanel et on l'ajoute dans un nouvel Onglet.
TimePanel renvoit donc un JPanel, avec dessus un JLabel ( ce qui affichera le temps ) et 3 boutons : start, stop, et raz ( qui feront l'action du chronos ).
Une fois l'objet créé, on éxécute la méthode Timer() qui sera appelé toutes les une secondes, incrémentant aisi la variable s ( secondes ) et s'il le faut m ( minutes ) et h(heure).
Ensuite le JLabel est mis à jour.
Les 3 boutons recoivent des actions : start : started=true ( le chrono est en route )
stop : starded=false; ( stop le chrono )
raz : remize à réro.
Voilà, bon maintenant, il y a un problème :
Lorsque je clique sur Nouvel Onglet, le programme se bloque.
Ca fait 2 jours que je cherche le problème, mais en vain.
Tout ce que je sais, c'est que ca vient d ela methode Timer().
Car sans cette méhode, l'onglet s'affiche ainsi que le TimePanel.
Voilà, donc si vous pouvez m'aider ! Merci d'avance !
Partager