IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

[JTable]inseretion d'une collection d'objets. HELP!


Sujet :

Composants Java

  1. #21
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 43
    Points : 14
    Points
    14
    Par défaut
    Je suis désolé pour ma vitesse de compréhension (sans doute dû au manque de sommeil...) mais il me reste encore un point à éclaircir.
    Si je m'inspire de tes deux précédents messages, je devrais écrire un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public Object getValueAt (int row, int col) {// pas de sens !!!
    	  int cpt = 0;
    	  for(Object o : data) {
    	    if( o instanceof Ressource ) {
    	    	cpt++;
    	    	if(col == 0) {
    	            return ((Ressource)o).getTitre().toString();
    	         } else if (col ==1) {
    	            return ((Ressource)o).getDurée().toString();
    	         }
    	    } 
    	  } 
      }
    Seulement cette méthode demande un objet en retour et ceux des boucles ne sont pas pris en compte.... :-(

    Qu'est-ce que j'ai encore loupé??
    Sorry...

  2. #22
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Tu as mal compris l'utilité du getValueAt: il représente la valeur pour une case dans ta JTable. les paramètres row et col représentent les coordonnées de la case dans ta JTable.
    Donc grosso modo row représente l'index de l'objet dans ta liste et col représente la propriété de l'objet que tu veux afficher dans cette colonne. A toi de faire correspondre les valeurs de col possibles à certaines propriétés de tes objets...

    SAuf que dans le cas présent tu utilises des List de List. donc pour obtenir l'élément dans ta case tu vas faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public Object getValueAt(int row, int col) {
       List l = (List) data.get(row); //on récupère la liste qui se trouve à la ligne row
       return l.get(col); //on retourne l'objet qui se trouve en position col dans la ligne précédemment récupérée
    }
    Mais au vu de tes explications tu sembles faire pas mal de confusions, je serais toi je remettrais tout à plat et reprendrais pas à pas le tutoriel de Sun, ça ira mieux pour toi...
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  3. #23
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 43
    Points : 14
    Points
    14
    Par défaut
    Merci sink pour ta réponse !
    J'avais bien compris l'utilité de cette méthode (même si je reste assez perturbé par le fait que je ne sais pas ni comment ni quand elle est utilisée.... puisqu faisant partie de l'objet AbstractTableModel ?).
    Mon probléme est justement de faire correspondre les valeurs des propriétés des objets se trouvant au sein d'une liste (p'tet pas clair ça en effet ...).
    J'en suis arrivé à placé les données dans un tableau à deux dimensions en esperant que ce soit moins problématique à récupérer.
    Je vous tiendrai aux news...

  4. #24
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 43
    Points : 14
    Points
    14
    Par défaut
    Merci sink pour ta réponse !
    J'avais bien compris l'utilité de cette méthode (même si je reste assez perturbé par le fait que je ne sais pas ni comment ni quand elle est utilisée.... puisqu faisant partie de l'objet AbstractTableModel ?).
    Mon probléme est justement de faire correspondre les valeurs des propriétés des objets se trouvant au sein d'une liste (p'tet pas clair ça en effet ...).
    J'en suis arrivé à placé les données dans un tableau à deux dimensions en esperant que ce soit moins problématique à récupérer.
    Je vous tiendrai aux news...

  5. #25
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Bah c'est comme pour un tableau, elles sont là où tu les ajoutes....

    Ensuite si toi tu ne sais pas ou elles sont, utiliser des tableaux à la place des listes ne changera rien

    Et cette méthode est utilisée par la JTable à tout raffraichissement pour mettre à jour les données affichées. la valeur affichée dans chaque case est obtenue depuis le model au travers d'un appel à cette méthode.

    Donc à la base tout dépend de la façon dont tu organises tes listes...

    Et la méthode que je t'ais donné au dessus est celle que j'utilise systématiquement dans le cas de liste des listes pour un TableModel...

    Et accessoirement c'est ce qui est fait dans l'implémentation du DefaultTableModel de swing:

    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
     
        /**
         * Returns an attribute value for the cell at <code>row</code>
         * and <code>column</code>.
         *
         * @param   row             the row whose value is to be queried
         * @param   column          the column whose value is to be queried
         * @return                  the value Object at the specified cell
         * @exception  ArrayIndexOutOfBoundsException  if an invalid row or
         *               column was given
         */
        public Object getValueAt(int row, int column) {
            Vector rowVector = (Vector)dataVector.elementAt(row);
            return rowVector.elementAt(column);
        }
    Donc transformer tes listes en tableau reviendra au final par utiliser le code ci dessus après retransformation des tes Tableaux en Collections (les Vector étant des collections comme les autres)
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  6. #26
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 43
    Points : 14
    Points
    14
    Par défaut
    Bon...
    Tu m'as convaincu de l'inutilité de ma nouvelle démarche...

    Du coup j'ai essayé ton code mais là :

    Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 11, Size: 11
    at java.util.ArrayList.RangeCheck(Unknown Source)
    at java.util.ArrayList.get(Unknown Source)
    at ihm.TableauModel.getValueAt(TableauModel.java:33)
    at javax.swing.JTable.getValueAt(Unknown Source)
    at javax.swing.JTable.prepareRenderer(Unknown Source)
    at javax.swing.plaf.basic.BasicTableUI.paintCell(Unknown Source)
    at javax.swing.plaf.basic.BasicTableUI.paintCells(Unknown Source)
    at javax.swing.plaf.basic.BasicTableUI.paint(Unknown Source)
    at javax.swing.plaf.ComponentUI.update(Unknown Source)
    at javax.swing.JComponent.paintComponent(Unknown Source)
    at javax.swing.JComponent.paint(Unknown Source)
    at javax.swing.JComponent.paintChildren(Unknown Source)
    at javax.swing.JComponent.paint(Unknown Source)
    at javax.swing.JViewport.paint(Unknown Source)
    at javax.swing.JComponent.paintChildren(Unknown Source)
    at javax.swing.JComponent.paint(Unknown Source)
    at javax.swing.JComponent.paintChildren(Unknown Source)
    at javax.swing.JComponent.paint(Unknown Source)
    at javax.swing.JComponent.paintChildren(Unknown Source)
    at javax.swing.JComponent.paint(Unknown Source)
    at javax.swing.JComponent.paintWithOffscreenBuffer(Unknown Source)
    at javax.swing.JComponent.paintDoubleBuffered(Unknown Source)
    at javax.swing.JComponent._paintImmediately(Unknown Source)
    at javax.swing.JComponent.paintImmediately(Unknown Source)
    at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
    at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknown Source)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
    Il semblerait qu'il y 'ai encore un problème dans le 'placement' des données dans le tableau...
    Je désespère (48h sur cette §ù%$" # de JTable...)

  7. #27
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 43
    Points : 14
    Points
    14
    Par défaut
    Je suppose donc que le probleme vient, si ce n'est pas de la méthode 'getValueAt', vient de celle qui créé cette liste :

    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
    public static List Ressources2txt(){
    		 Session session = HibernateUtil.currentSession(); 
    		 Transaction tx = session.beginTransaction();
     
    		 ArrayList ressourcesTxt = new ArrayList();
    		 GestionDate dateFormatée = new GestionDate();
    		 List ressources = session.createQuery("select r from Ressource as r").list();
    		 for (int i = 0; i < ressources.size()-1; i++) {
    					List res2txt = new ArrayList();
    					Ressource element = (Ressource) ressources.get(i);
    					res2txt.add(0, element.getTitre());
    					res2txt.add(1, element.getTitreorigin());
    					res2txt.add(2, element.getDurée());
    					res2txt.add(3, dateFormatée.getDateLongue(element.getDatesortie()));
    					res2txt.add(4, element.getResume());
    					res2txt.add(5, element.getLicence());
    					res2txt.add(6, element.getSupport());
    					res2txt.add(7, element.getDoncopie().toString());
    					res2txt.add(8, dateFormatée.getDateLongue(element.getDaterecept()));
    					res2txt.add(9, dateFormatée.getDateLongue(element.getDatereponse()));
    					res2txt.add(10, element.getRef().toString());
    					ressourcesTxt.add(i, res2txt);
    				}
    		 	tx.commit();
    		 return ressourcesTxt;
    	 }
    Je la remet histoire de vous faciliter la lecture.

  8. #28
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Tu as tout simplement un nombre de colonnes supérieur au nombre d'éléments dans ta liste...
    Vérifie ce que tu mets dans le tableau des noms de colonnes vu qu'il sert à ton model pour calculer ce nombre
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  9. #29
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 43
    Points : 14
    Points
    14
    Par défaut
    Allélouïa!!
    Sinok tu es mon sauveur!!! :-)
    En fait, vu que les données que je stocke sont des sous-classes de ressources, j'avais créé le nombre maxi de propriétés possibles.
    Je vais gérer (enfin j'éspère ... ;-) ) au niveau du chargement de ma list...

    Et encore un grand merci à toi et à tous ceux qui ont participé!!!

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Modifier une collection d'objets dans un formulaire
    Par GiveMeAName dans le forum Struts 1
    Réponses: 6
    Dernier message: 30/08/2006, 13h30
  2. Réponses: 6
    Dernier message: 24/03/2006, 09h22
  3. Problème de gestion d'une collection d'objet
    Par poolky dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 17/02/2006, 21h51
  4. [Struts] <logic:iterate> sur une collection d objets c
    Par trax020 dans le forum Struts 1
    Réponses: 2
    Dernier message: 12/05/2005, 00h11
  5. [VB6] Sauvegarder une collection d'objets
    Par Sayagh dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 19/09/2003, 11h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo