L'heure courante avec thread

josef1705 Messages postés 29 Date d'inscription lundi 19 mai 2008 Statut Membre Dernière intervention 14 juillet 2011 - 27 déc. 2009 à 01:02
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 28 déc. 2009 à 18:44
Bonsoir Mensieurs,
je veux l'heure courante sur une jFrame a l'aide des thread
en ce mement je peux afficher l'heure mais sans thread
et ce code vous montrer ou je suis arrive :

GregorianCalendar gc=new GregorianCalendar();
int h=gc.get(Calendar.HOUR);
int m=gc.get(Calendar.MINUTE);
int s=gc.get(Calendar.SECOND);
String hor=h+":"+m+":"+s;
datecour.setText(hor);

system.out.print("Merci beaucoup...")
 

9 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
27 déc. 2009 à 06:52
Salut,

Tout d'abord, au lieu de faire comme cà, passe par un SimpleDateFormat, ce sera bien plus simple et tu t'évite des problèmes de formatage :
Date gc=new Date();
SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
datecour.setText(format.format(gc)); 


Sinon pour ton thread, rien de plus simple : tu crée une classe qui étend de la classe Thread, tu implémentes la méthode run, et tu n'as plus qu'à le lancer :

Ce qui dans ton cas donne un truc du genre :
public class MonThread extends Thread {

  protected JTextField dateText;  

  public MonThread(JTextField dateText) {
    this.dateText = dateText;
  }

  public void run() {
    while (true) {
      Date gc=new Date();
      SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
      dateText.setText(format.format(gc));
      Thread.sleep(1000);
    }
  }
}

______________________________________
DarK Sidious
0
josef1705 Messages postés 29 Date d'inscription lundi 19 mai 2008 Statut Membre Dernière intervention 14 juillet 2011
27 déc. 2009 à 21:01
merci,
mais j'ai pas bien compris ce code et comment je peux le rendre util dans une jFrame en swing

regardez ce que j'ai fait ...

     public class MonRunnable implements Runnable {
        public void run() {
Date gc=new Date();
      SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
      datecour.setText(format.format(gc));
                try {
                    Thread.sleep(1000);
                } catch (Exception e) {
                    e.printStackTrace();
}
} }

et puis j'ai donne l'evenement formWindowOpened a mon jFrame:

private void formWindowOpened(java.awt.event.WindowEvent evt) {                                  
MonRunnable mr=new MonRunnable();
mr.run();
}

merci pour votre aide...
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
27 déc. 2009 à 21:15
Salut,

Tu as oublié le constructeur... qui est fondamental ici !
Donc :
public class MonRunnable implements Runnable {

  protected JTextField dateText;  

  public MonRunnable(JTextField dateText) {
    this.dateText = dateText;
  }

  public void run() {
    while (true) {
      Date gc=new Date();
      SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
      dateText.setText(format.format(gc));
      Thread.sleep(1000);
    }
  }
}


Et :
private void formWindowOpened(java.awt.event.WindowEvent evt) {                                  
  MonRunnable mr=new MonRunnable(tonLabel);
  mr.run();
}

______________________________________
DarK Sidious
0
josef1705 Messages postés 29 Date d'inscription lundi 19 mai 2008 Statut Membre Dernière intervention 14 juillet 2011
28 déc. 2009 à 00:36
merci tout d'abord
je pense que la boucle while plante le pc je sais pas pourquoi

 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
28 déc. 2009 à 06:10
Salut,

Il ne faut pas oublier le sleep dans la boucle while, sinon elle prends tout le cpu !
______________________________________
DarK Sidious
0
josef1705 Messages postés 29 Date d'inscription lundi 19 mai 2008 Statut Membre Dernière intervention 14 juillet 2011
28 déc. 2009 à 16:13
salut,
j'ai fait tous que t'as ecrit mais ca marche pas
je pense que le probleme se trouve dans la boucle
et le pc se plante toujour
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
28 déc. 2009 à 16:16
Salut,

Montre voir ton code
______________________________________
DarK Sidious
0
josef1705 Messages postés 29 Date d'inscription lundi 19 mai 2008 Statut Membre Dernière intervention 14 juillet 2011
28 déc. 2009 à 18:38
     public class MonRunnable implements Runnable {

           protected JTextField dateText;

  public MonRunnable(JTextField dateText) {
    this.dateText = dateText;
  }
        public void run() {
    while(true) {
              Date gc=new Date();
              SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
              heurfield.setText(format.format(gc));
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException ex) {
                    Logger.getLogger(tounois.class.getName()).log(Level.SEVERE, null, ex);
                }
    }
}
        }






 private void formWindowOpened(java.awt.event.WindowEvent evt) {                                  
MonRunnable mr=new MonRunnable(heurfield);
mr.run();
}
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
28 déc. 2009 à 18:44
Salut,

Arf, il faut appeler start et non run pour lancer le thread :

mr.start();

______________________________________
DarK Sidious
0
Rejoignez-nous