Bonjour,
Je suis en train de faire une horloge réglable ( j'essaye en fait).
Pour ce faire, je récupère l'heure système grâce à la méthode Calendar comme ci dessous :
Grâce à un thread, j'arrive à lancer cette fonction toutes les secondes et cela affiche dans un label l'heure réactualisée toutes les secondes, superbe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public String donnerHeure(int h, int m, int s) { GregorianCalendar d = new GregorianCalendar(); int heure = d.get(Calendar.HOUR_OF_DAY); int min = d.get(Calendar.MINUTE); int sec = d.get(Calendar.SECOND); return (heure+":"+min+":"+sec); }.
Mais là n'est pas le plus dur, car maintenant j'aimerais changer l'heure dynamiquement avec 3 entiers en paramètre dans la fonction (heure, secondes, minutes).
Par le moyens de checkbox, on choisi les nouvelles données de l'heure.
J'ai réfléchi ( et oui), et je me suis dit que pour régler les minutes je vais :
calculer combien de minutes il faut pour arriver à 60 en soustrayant les minutes systeme par 60 , et ensuite ajouter la difference à la minute voulue.
Avec cela, les minutes changent bien mais elles se figent, elles ne défilent plus en fonction des secondes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 public String donnerHeure(int h, int m, int s) { GregorianCalendar d = new GregorianCalendar(); int heure = d.get(Calendar.HOUR_OF_DAY); int min = d.get(Calendar.MINUTE); int sec = d.get(Calendar.SECOND); //Calcul de la différence int diff=60-min; //Je rajoute dans l'heure calendrier la différence ce qui amène les minutes à 0 et j'ajoute la minute voulue (m). d.add(Calendar.HOUR_OF_DAY,diff+m); int min2 = d.get(Calendar.MINUTE);//je récupère les minutes modifiées return (heure+":"+min2+":"+sec); }
En fait j'ai remarqué que dès lors que dans la calendar.add, j'utilise une soustraction, tout se fige complètement.
Malheuresement je n'arrive pas à faire l'expression arithmétique sur les heures calendar qui me permetteraient de régler cette horloge.
Peut être je fais fausse piste et ne devrait pas utiliser Calendar pour pouvoir régler une heure en java.
Pouvez vous m'éclairer s'il vous plait? Je dois en plus rendre ce projet cette semaine.
Je met aussi à disposition ceci :
J'attend vos conseils
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 public String donnerHeure(int h, int m, int s) { GregorianCalendar d = new GregorianCalendar(); int heure = d.get(Calendar.HOUR_OF_DAY); int min = d.get(Calendar.MINUTE); int sec = d.get(Calendar.SECOND); int diff=60-min; d.add(Calendar.HOUR_OF_DAY,diff+m); int min2 = d.get(Calendar.MINUTE); return (heure+":"+min2+":"+sec); } public void run() { while (interrupted==false) { l.setText(donnerHeure(h,m,s)); try { Thread.sleep(1000); } catch (InterruptedException e) {} } }.
Partager