cs_Erwan76
Messages postés29Date d'inscriptionlundi 27 février 2006StatutMembreDernière intervention 2 avril 2007
-
28 mars 2007 à 09:56
Fifan
Messages postés26Date d'inscriptionsamedi 4 janvier 2003StatutMembreDernière intervention10 mai 2007
-
11 avril 2007 à 11:31
Bonjour, j'ai un problème avec la récupération de l'heure.
En faite, le truc c'est que je récupère bien l'horloge mais je ne parviens pas à la réactualiser toutes les minutes.
Voici mon code
void Heure(){
GregorianCalendar d = new GregorianCalendar();
int heure = d.get(Calendar.HOUR);
int min = d.get(Calendar.MINUTE);
cs_Erwan76
Messages postés29Date d'inscriptionlundi 27 février 2006StatutMembreDernière intervention 2 avril 2007 28 mars 2007 à 10:42
Voila ce que je fais suivant tes modifications.
Je crée cette méthode:
new Thread(){
void Heure(){
GregorianCalendar d = new GregorianCalendar();
int heure = d.get(Calendar.HOUR);
int min = d.get(Calendar.MINUTE);
String Sheure=Integer.toString(heure);
String Smin=Integer.toString(min);
String heure_complete=Sheure+":"+Smin;
jTextField2.setText(heure_complete);
}
}
et ensuite je rajoute la dernière ligne
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
// Rendre visible la Frame Affichage
new Affichage().setVisible(true);
while (true){
{
heure();
Thread.sleep(60000);
}
}
});
}
C'est bien cela ou je doi laisser tout ensemble.
Sinon, j'utilise Netbeans et il me souligne en rouge la ligne new Thread.
Merci beaucoup DARKSIDIOUS
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 28 mars 2007 à 11:02
hum non, dans ton code, ca ne peut pas marcher : tu créer bien un thread (ton new Runnable()), donc du coup tu n'as plus besoin de la nouvelle instance d'un thread, du coup, ca donne :
void Heure(){
GregorianCalendar d = new GregorianCalendar();
int heure = d.get(Calendar.HOUR);
int min = d.get(Calendar.MINUTE);
String Sheure=Integer.toString(heure);
String Smin=Integer.toString(min);
String heure_complete=Sheure+":"+Smin;
jTextField2.setText(heure_complete);
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
// Rendre visible la Frame Affichage
new Affichage().setVisible(true);
while (true){
{
heure();
Thread.sleep(60000);
}
}
});
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Erwan76
Messages postés29Date d'inscriptionlundi 27 février 2006StatutMembreDernière intervention 2 avril 2007 28 mars 2007 à 11:56
Je te remercie.
Ca va biento fonctionner. Encore un léger problème.
Losque tu fais ta boucle et ensuite heure(), il me met non-static methode heure cannot be referenced from a static context.
Merci de m'aider autant!!!
Le problème, c'est quand il y a un changement de minute (horologe system), ca ne se propage pas sur l'applicaion java.
As-tu une autre idée.
Je te remercie.
cs_GodConan
Messages postés2113Date d'inscriptionsamedi 8 novembre 2003StatutContributeurDernière intervention 6 octobre 201212 29 mars 2007 à 16:21
GRRRR les nom de methode ne doivent pas commencer par une majuscule ....
pense à faire un rafraichissement de l affichage si tu change les valeurs ... un petit repaint() ca doit pas faire de mal ;o)..
Fifan
Messages postés26Date d'inscriptionsamedi 4 janvier 2003StatutMembreDernière intervention10 mai 2007 11 avril 2007 à 11:31
Salut,
A la place de ton while qui bloque l'application, tu peux utiliser un Timer (c'est fait pour ça):
new Timer(1000, new ActionListener() {
public void actionPerformed(ActionEvent ev) {
frame.heure();
frame.repaint();
}
}).start();
De plus, pour écrire l'heure, il existe des formatter pour ça qui utilise la locale:
Date date = Calendar.getInstance().getTime();
DateFormat dateFormatter = DateFormat.getTimeInstance();
jTextField2.setText(dateFormatter.format(date));