Heure et Dates actuelles ..

Résolu
Bonjour,

J'essaye d'afficher l'heure et la dates actuelles d'une manière dynamique .. voilà le code que j'ai écrit mais il ne fonctionne pas et m'affiche le label vide :s

 public void clock()
 {
  Thread clock = new Thread()
  {
   public void Run()
   {
    try 
    {
     for(;;)
     {
     Calendar cal = new GregorianCalendar();
     
     int day = cal.get(Calendar.DAY_OF_MONTH);
     int month = cal.get(Calendar.MONTH);
     int year = cal.get(Calendar.YEAR);
     
     int second = cal.get(Calendar.SECOND);
     int minute = cal.get(Calendar.MINUTE);
     int hour = cal.get(Calendar.HOUR);
     
     lblClock.setText(hour + ":" + minute + ":" + second + "      " + day + "/" + month + "/" + year);
     
     sleep(1000);
     
     }
    } catch (InterruptedException e) 
    {
     e.printStackTrace();
    }
    
    
    
   }
  };
  
  clock.start();
  
  

 }
 public Bienvenue() {
  initialize();
  clock();
  
 }


EDIT: Ajout de la coloration syntaxique.

Merci beaucoup d'avance :)

3 réponses

  1. Salut,
    J'ai essayé ça et cela fonctionne :

    Thread clock = new Thread() {
       public void run() {
        try {
         for(;;) {
          SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");
          Calendar cl = Calendar.getInstance();
          String currentDate = df.format(cl.getTime());
          
          lblClock.setText(currentDate);
          
          sleep(1000);
         }
        } catch (InterruptedException e) {
         e.printStackTrace();
        }
       }
      }; clock.start();
    1. Modérateur
      Oui, ça fonctionne parce que tu as
      run()
      avec un "r" minusucle, alors que Mayusu as
      Run()
      avec un "R" majuscule, c'est ce que je disais déjà ici.

      Comme la méthode
      start()
      appelle la méthode
      run()
      , écrire le traitement dans une méthode
      Run()
      est sans effet pour le Thread.
  2. Modérateur
    Bonjour,

    Je n'ai pas testé, mais la méthode
    public void Run()
    n'est pas celle attendue pour définir le corps du thread, c'est
    public void run()
    avec un "r" minuscule qui est attendu. Un moyen simple de ne pas se faire avoir c'est de rajouter l'annotation
    @Override
    qui va déclencher une erreur si la méthode sur laquelle elle est posée n'est pas une redéfinition.

    Thread clock = new Thread()
    {
        @Override
        public void run()
        {