Une jlabel timer (que secondes, minutes, heures)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 983 fois - Téléchargée 18 fois

Contenu du snippet

Ce code est tout simplement une JLabel qui détermine le temps écoulé depuis que l'on a validé. En outre, on peut le réinitialiser.

Source / Exemple :


package com.loloof64.commonclasses;

import java.util.Timer;
import java.util.TimerTask;

import javax.swing.JLabel;

/**

  • Une JLabel qui affiche le temps écoulé depuis qu'elle
  • a été validée. Elle est en outre réinitialisable.
  • Elle affiche depuis les heures jusqu'aux secondes.
  • @author laurent BERNABE
*
  • /
public class Temps extends JLabel { /**
  • La variable de serie.
  • /
private static final long serialVersionUID = 3443080658560958094L; /**
  • Le composant servant à mesurer le temps écoulé.
  • /
private Timer timer; /**
  • Le nombre de secondes écoulées.
  • /
private long secondes; /**
  • Indique si le Temps est valide : c'est à dire si le Temps
  • peut être éxécuté.
  • /
private boolean valide; /**
  • Le constructeur par défaut.
*
  • /
public Temps(){ super(""); secondes = 0; valide = false; /* Le coeur de la détermination du temps écoulé */ timer = new Timer(); timer.schedule(new TimerTask(){ public void run() { if (valide) { secondes += 1; setText(timeToText(secondes)); } } },0,1000); /* ******************************************** */ initialiser(); } /**
  • Initialise mais modifier la validation : le texte
  • réaffiche simplement un temps de 0.
*
  • /
public void initialiser(){ this.secondes = 0; this.setText(timeToText(secondes)); } /**
  • Retourne le texte à afficher en fonction du nombre de
  • secondes écoulées. Si on dépasse 23h59mn59s, on revient
  • à un temps de 0h0mn0s.
  • @param secondes - double Le nombre de secondes écoulées.
  • @return String - Le texte à afficher.
  • /
private String timeToText(long secondes){ /* Détermination des 3 composantes int h, mn, s
  • Remarque, on aura toujours les nombres qui tiennent
  • sur deux chiffres, grâce aux modulos*/
long heure, min, sec; sec = secondes % 60; min = (secondes / 60) % 60; heure = (secondes / (60*60)) % 24; /* Détermination des 3 composantes String h, mn, s */ String sHeure, sMin, sSec; sHeure = timeFormat(heure); sMin = timeFormat(min); sSec = timeFormat(sec); /* Retourne la chaîne à afficher */ return sHeure + ":" + sMin + ":" + sSec; } /**
  • @param timeComposant long - Une composante temps : des heures, des
  • minutes ou des secondes.
  • @return String - une chaine qui fait au moins 2 chiffres (Plus
  • si timeComposant dépasse 99, ce qui ne devrait pas être
  • le cas. Mais j'ai préféré ne pas créer d'exception pour ce qui
  • peut être une grossière erreur de programmation de la part
  • d'utilisateurs).
  • /
private String timeFormat(long timeComposant){ if(timeComposant<10) return "0"+new Long(timeComposant).toString(); else{ return new Long(timeComposant).toString(); } } /**
  • Permet d'autoriser le temps à s'écouler ou non.
  • @param valide - boolean, True si l'on veut que le temps
  • s'écoule.
  • /
public void setValide(boolean valide) { this.valide = valide; } }

A voir également

Ajouter un commentaire

Commentaires

Messages postés
342
Date d'inscription
vendredi 1 septembre 2006
Statut
Membre
Dernière intervention
6 novembre 2012

Bonjour Neutrino216 :) Désolé pour le retard.
Merci beaucoup :)
C'est vrai que je suis un grand amateur de ces fameuses classes anonymes ... Mais je tiendrais compte de votre conseil à l'avenir :)
Messages postés
25
Date d'inscription
mardi 21 février 2006
Statut
Membre
Dernière intervention
12 juillet 2007

Je suis pas fan des instructions comme celle que tu mets ( timer.schedule ) ou tu mets en argument une classe anonyme (TimerTask).
Java offre la possibilité de faire ce genre de chose. Mais c'est très nuisible à la clarté du code et sa lisibilité. C'est beaucoups plus lisible d'écrire cette classe en temps que sous-classe, d'autant qu'il y a qu'une seule classe dans ton projet.
Sinon rien à dire le code est bien commenté! Bravo.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.