IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

reinitialiser le timer probleme d'affichage


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 5
    Par défaut reinitialiser le timer probleme d'affichage
    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

  2. #2
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Bonjour,

    Dans ton actionPerformed, essayes de mettre quelque chose comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (this.isRunning()) {
       this.stopDTimer();
     } else {
       this.timeCount = 0;
       this.startDTimer();
     }

Discussions similaires

  1. [VB.NET] Probleme d'affichage entre ListBox/TextBox
    Par Monster77 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/08/2004, 11h02
  2. [VB.NET] Probleme d'affichage de controle
    Par mic56 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 09/06/2004, 15h03
  3. xml-xsl-fo : probleme d'affichage d'un tableau
    Par clindoeil dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 12/12/2003, 12h46
  4. [langage] Problème d'affichage
    Par marcoss dans le forum Langage
    Réponses: 3
    Dernier message: 29/08/2003, 13h05
  5. IE [Applet] Plug-in problème d'affichage
    Par Tonton Luc dans le forum JBuilder
    Réponses: 4
    Dernier message: 19/06/2003, 08h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo