[JAVA] [Résolu] Variable Calendar incrémentée dans une boucle

Variable Calendar incrémentée dans une boucle [JAVA] [Résolu] - Java - Programmation

Marsh Posté le 28-05-2008 à 13:41:25    

Bonjour,  
 
Je cherche à enregistrer une date (et heure) dans une boucle, jusqu'à la fin du mois.
Je m'explique : on sélectionne une heure dans une jdialog et cette heure sera enregistrée à partir d'aujourd'hui et pour tous les jours jusqu'à la fin du mois.
Donc, si on est le 28 et que je choisis 16h40, je devrais avoir 4 objets avec exactement les mêmes valeurs sauf le jour :  
 
Objet 1 : Toto, Jaune, 16h40, 28/05/2008
Objet 2 : Toto, Jaune, 16h40, 29/05/2008
Objet 3 : Toto, Jaune, 16h40, 30/05/2008
Objet 4 : Toto, Jaune, 16h40, 31/05/2008
 
Voici comment je m'y prends :  
 
Enregistrement des objets :  
 

Code :
  1. int day = cal.get(Calendar.DAY_OF_MONTH);
  2.         int month = cal.get(Calendar.MONTH) + 1;
  3.         int year = cal.get(Calendar.YEAR);
  4.         int hour = Integer.parseInt(jComboBoxHeure.getSelectedItem().toString());
  5.         int mins = Integer.parseInt(jComboBoxMinute.getSelectedItem().toString());
  6.        
  7.         cal.set(year, month, day, hour, mins);
  8.        
  9.         int moisactuel = cal.get(Calendar.MONTH);
  10.         while(moisactuel==cal.get(Calendar.MONTH))
  11.         { 
  12.             MonObjet obj = new MonObjet("Toto", "Jaune", cal);
  13.             tListeObjets.add(obj);
  14.             cal.add(Calendar.HOUR, 24);
  15.         }


 
Lecture des objets :  
 

Code :
  1. Object[][] obj;
  2. obj = new Object[ListeObjets.size()][5];
  3. for (int i = 0 ; i < ListeObjets.size() ; i++)
  4. {
  5.  obj[i][0] = ((MonObjet)ListeObjets.get(i)).getNom();
  6.  obj[i][1] = ((MonObjet)ListeObjets.get(i)).getCouleur();
  7.  obj[i][2] = ((MonObjet)ListeObjets.get(i)).getDate();
  8.  obj[i][3] = ((MonObjet)ListeObjets.get(i)).getHeure();
  9. }
  10. jTable1.setModel(new javax.swing.table.DefaultTableModel(obj, new String [] {"Nom", "Couleur", "Date", "Heure"}));


 
Ce qui me donne  :  
Objet 1 : Toto, Jaune, 16h40, 01/06/2008
Objet 2 : Toto, Jaune, 16h40, 01/06/2008
Objet 3 : Toto, Jaune, 16h40, 01/06/2008
Objet 4 : Toto, Jaune, 16h40, 01/06/2008
 
Voici mes méthodes getDate et getHeure :  
 

Code :
  1. public String getDate ()
  2.     {
  3.         String tmpString = null;
  4.        
  5.         tmpString = Today.get(Calendar.DAY_OF_MONTH) + "/" + Today.get(Calendar.MONTH) + "/" + Today.get(Calendar.YEAR);
  6.        
  7.         return tmpString;
  8.     }
  9.    
  10.     public String getHeure ()
  11.     {
  12.         String tmpString = null;
  13.        
  14.         tmpString = Today.get(Calendar.HOUR_OF_DAY) + "h" + Today.get(Calendar.MINUTE);
  15.        
  16.         return tmpString;
  17.     }


 
Je suis perdu là en fait, si quelqu'un pouvait m'aider, ce serait vraiment sympa ;)


Message édité par Jericho le 28-05-2008 à 14:24:42
Reply

Marsh Posté le 28-05-2008 à 13:41:25   

Reply

Marsh Posté le 28-05-2008 à 13:45:30    

En java, tout se fait par reference donc tu passes une reference a cal a tout tes objets MonObjet. Donc quand tu modifies cal, tous les objets MonObjet voient la modif...


---------------
http://poemes.iceteapeche.com - http://www.simuland.net
Reply

Marsh Posté le 28-05-2008 à 13:53:16    

Arrgggg.... C'est juste!  :cry:  
 
Comment je pourrais faire pour que chaque objet aie un cal différent? Déclarer un tableau de calendar et assigner une ligne du tableau à chaque objet?

Reply

Marsh Posté le 28-05-2008 à 14:07:51    

Que fais tu ensuite de cal dans tes objets ?
 
est ce que faire :
 
new MonObjet("Toto", "Jaune", cal.getTime ());
 
ne serait pas suffisant ?
 
Date d = cal.getTime ();


---------------
http://poemes.iceteapeche.com - http://www.simuland.net
Reply

Marsh Posté le 28-05-2008 à 14:10:59    

Malheureusement non, l'heure doit etre spécifiée à la main, ce n'est pas l'heure actuelle.

Reply

Marsh Posté le 28-05-2008 à 14:17:21    

J'ai réussi!!! \o/
 
Dans mon constructeur d'initialisation, à la place de faire
 
MonCalendrier = LeCalendrierEnvoyé;
 
Je fais :  
 
int day = tToday.get(Calendar.DAY_OF_MONTH);
        int month = tToday.get(Calendar.MONTH);
        int year = tToday.get(Calendar.YEAR);
        int hour = tToday.get(Calendar.HOUR_OF_DAY);
        int mins = tToday.get(Calendar.MINUTE);
         
        Today.set(year, month, day, hour, mins);
 
Et ca marche, merci pour ton aide! ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed