voici le code d'un timer que je cherche à le reinitialiser
le probleme est qu'il ne peut qu'avancer
aucune idée pour changer ce code
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
 
/****
    * Classe DTimer : 
             gere un compteur de temps ainsi que l'affichage, utilisation du composant javax.swing.Timer 
    *        qui genere un evenement tout les x temps d'intervalle ;
    *        solution qui est plus pratique qu'une classe qui herite de Thread ou implemente l'interface 
    *        Runnable car ces deux dernieres solutions imposent un traitement graphique hors du processus 
    *        d'evenement "the event-dispatching thread" ce qui est normalement deconseille pour ne par dire interdi
    *
    ****/
 
import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.event.*;
 
public class DTimer extends JFrame implements ActionListener
{
	/****
            * Attributs :
            *
            ****/
	protected JLabel viewTime;  // composant permettant l'affichage du temps ecoule
	protected int timeCount;	// variable permettant de memoriser le temps ecoule
	protected int t2=1;           //minute
	protected Timer timer;		// objet javax.swing.Timer
 
	/****
            * Constructeur :
            *
            ****/
	// (par defaut) initialise le compteur a 0 et le delay a 1 seconde
	public DTimer ()
	{	this (0, 1000);
	}
 
	// construit un timer avec le temps initiale donnee et le delay a 1 seconde
	public DTimer (int initialTime)
	{	this (initialTime, 1000);
	}
 
	// construit un timer avec le temps et le delay donne
	public DTimer (int initialTime, int delay)
	{	super ("Demo chrono sans thread");
		setFont(new Font("TimesRoman", Font.BOLD|Font.PLAIN,20));
		this.viewTime = new JLabel ("0:0"+this.timeCount);
		this.viewTime.setFont(new Font("TimesRoman", Font.BOLD|Font.PLAIN,30));
		this.timer = new Timer (delay, this);
		this.initGraphic ();
	}
 
	/****
            * Methodes :
            *
            ****/
	// initialise la partie graphique de la demo
	protected void initGraphic ()
	{	JButton bouton = new JButton ("start/stop");
		bouton.getColorModel();
		bouton.setActionCommand ("Bouton");
		bouton.addActionListener (this);
		this.viewTime.setHorizontalAlignment (JLabel.CENTER);
		this.getContentPane ().add (bouton, BorderLayout.SOUTH);
		this.getContentPane ().add (this.viewTime, BorderLayout.CENTER);
		this.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
		this.setLocation (250, 250);
		this.pack ();
		this.setVisible (true);
	}
 
	// lance le compteur de temps 
	public void startDTimer ()
	{	this.timer.start ();
	}
 
	// stop le compteur de temps 
	public void stopDTimer ()
	{	this.timer.stop ();
	}
	public void restart()
	{	
	}
	// permet de recuperer le temps deja ecoule
	public int getTime ()
	{	return ( this.timeCount );
	}
 
	// permet de connaitre l'etat d'activite du timer (lance ou non)
	public boolean isRunning ()
	{	return ( this.timer.isRunning () );
	}
 
	/****
            * Methode de l'interface ActionListener : 
            *        necessaire pour l'object javax.swing.Timer
            *        methode appelle a intervalle de temps regulier par le timer
            *        (utilise egalement par le bouton pour stopper et lancer le timer
            *         la difference ce fait via l'instruction getActionCommand)
            *
            ****/
	public void actionPerformed (ActionEvent e)
	{	
		// Cas d'un evenement genere par le bouton
 
		if ( "Bouton".equals (e.getActionCommand ()) )
		{	// le timer est en court d'execution donc on l'arrete
			if ( this.isRunning () )
			{	this.restart();
			}
			else // le timer est arrete donc on le lance ou relance
			{	this.startDTimer ();
			}
		}
		else // Cas d'un evenement genere par le composant javax.swing.Timer
		{	this.timeCount++;
			this.viewTime.setFont(new Font("TimesRoman", Font.BOLD|Font.PLAIN,30));
			if (timeCount/(t2*60)<60)
			if (timeCount%(t2*60)<10)
			this.viewTime.setText (timeCount/60+":0"+this.timeCount%(t2*60));
			else this.viewTime.setText (timeCount/60+":"+this.timeCount%(t2*60));
			else{
				t2++;
			}
	}}
 
	public static void main (String argv [])
	{	new DTimer ();
	}
}
merci d'avance