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. 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()
        {
    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.