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 :

Remplir un Jtable


Sujet :

Composants Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 23
    Points : 10
    Points
    10
    Par défaut Remplir un Jtable
    Bonjour à tous,


    Je souhaiterai remplir un tableau avec des objet contenu dans une liste chainée.
    Voici en détail comment ca fonctionne

    J ai une liste chainée de type LinkedList, la liste contient des objets de type CControl_agent_snmp.
    Un objet CControl_agent_snmp contient plusieurs donnée :
    Voici le constructeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     public CControle_agent_snmp (String nom, String ip, int superv, int numport)
     {
    	 nom_poste=nom;
    	 aip=ip;
    	 supervision=superv;
    	 port=numport;
     }
    Voila pour l'objet

    Donc dans une autre classe je dois remplir un tableau dont le nombre de ligne dépend du nombre d'élement de la liste chainée.

    Voila la fonction de chargement du tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public void chargement(CListe liste) // recoit en parametre la liste chainee
    {
          String nom=null;
         String aip=null;
         for&#40;int i=0;i<taille;i++&#41; //taille= le nombre d element de la liste  
       &#123; 
               int col=0; 
    	   pc = &#40;CControle_agent_snmp&#41;liste.get&#40;i&#41;; // met l objet de la liste chaine dans pc qui est de CControl_agent_snmp
    	   nom=pc.getNom_poste&#40;&#41;; // met l attribut de l objet dans nom
    	   jTconf.setValueAt&#40;nom,i,col++&#41;; // met le nom dans le tableau
    	  &#125;

    Ce bout de code marche parfaitement, le probleme est que mon tableau contient 4 colonnes, dont deux pour des entier.

    Ce que j aurai voulu faire c'est creer un objet qui contient les quatres données puis j ajoute c'est objet dans le tableau et la ligne est entierement rempli. Mais je ne s'est pas comment faire j ai deja regarder les tutos sur SUN concernant les tableaux etc mais je suis perdu.

    Si vous pouviez m'aider ca serai super sympa.

  2. #2
    Membre habitué
    Inscrit en
    Mars 2005
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mars 2005
    Messages : 130
    Points : 139
    Points
    139
    Par défaut
    Personnellement je m'y serais pris autrement, j'ai utilisé une JTable, mais avec un table model (extends AbstractTableModel) comme dans l'exemple de SUN.
    Celui-ci est remplit au moyen d'un vecteur, donc dans ton cas je remplirais les valeurs de ce vecteur en faisant un parcours de ta liste chaînée. un truc du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public void chargement&#40;CListe liste&#41; // recoit en parametre la liste chainee
    &#123;
    vector data=new vector&#40;&#41;;
         for&#40;int i=0;i<taille;i++&#41; //taille= le nombre d element de la liste 
       &#123;
               int col=0;
          pc = &#40;CControle_agent_snmp&#41;liste.get&#40;i&#41;; // met l objet de la liste chaine dans pc qui est de CControl_agent_snmp
          data.add&#40;pc.getnom_poste&#40;&#41;&#41;;
    data.add&#40;pc.getAip&#40;&#41;&#41;;
    ....
    &#125;
    Par contre manque peut etre qqch dans ton code, je comprends pas trop le int col=0; puis le col++, il sert à quoi?
    Mais bon je dirais que je débute aussi en JAVA.
    ACTC (certification Mac OS X/Mac OS X Server)
    Windows par obligation, Mac par délectation.
    Confirmé débutant (ou débutant confirmé) JAVA, C, PHP, JavaScript, HTML....

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    Le int col et et le col++ me permettai de me deplacer dans le tableau car celui ci contenanait plusieurs cellules, je l ai laissé alors que j aurai du enlever dans le bout de code que j ai mis dans le post.

    Donc si j ai bien compris ton exemple, je crée un vecteur dans lequel je met toutes les données d'une ligne puis j ajoute ce vecteur a mon tableau? ce qui remplira une ligne entiere?

    Comment ajouter ce vecteur a mon tableau ?

  4. #4
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Il faut que tu utilise un AbstractTableModel effectivement.

    Dans mon exemple, il s'agit d'un modèle de playlist.
    Chaque ligne de mon vecteur contient un objet Song (que j'ai créé).

    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
     
    class PlaylistModel extends AbstractTableModel &#123;
     
            private String&#91;&#93; columnNames = &#123;"No.", "Title",
                                            "Duration"&#125;;
            public Vector data = new Vector&#40;1&#41;;
     
            // Accesseurs
            public int getColumnCount&#40;&#41; &#123; return columnNames.length; &#125;
            public int getRowCount&#40;&#41; &#123; return data.size&#40;&#41;; &#125;
            public Object getValueAt&#40;int row, int col&#41; &#123;
                Song song = &#40;Song&#41; data.get&#40;row&#41;;
                if &#40;col == 1&#41; &#123; return song.getTitle&#40;&#41;; &#125;
                if &#40;col == 0&#41; &#123; return &#40;data.indexOf&#40;song&#41;+1&#41;; &#125;
                else &#123; return song.getDurationTime&#40;&#41;; &#125;
            &#125;
            public String getColumnName&#40;int col&#41; &#123;
                return columnNames&#91;col&#93;;
            &#125;
            public Class getColumnClass&#40;int c&#41; &#123;
                return getValueAt&#40;0, c&#41;.getClass&#40;&#41;;
            &#125;
     
            // Mes méthodes diverses...
        &#125;
    Ce modèle permet de contenir les données de ta JTable.
    Ensuite, ajouter/retirer une ligne, se fait simplement en agissant sur le veteur "data" qui doit contenir l'objet "Song" (dans mon exemple), objet qu'il te faudra créer par exemple.

    Si tu as 4 colonnes, crées un objet MonTruc avec ces 4 attributs (et les accesseurs qui vont bien, etc..).

    Ensuite, pour utiliser ce modèle dans ta JTable, il te suffit de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // Creates the model containing data
    PlaylistModel model = new PlaylistModel&#40;&#41;;
    // Creates the view to display this model
    JTable table = new JTable&#40;model&#41;;

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    J ai du mal a comprendre le principe du vecteur.

    Ma liste étant composé d objet CControl. Chaque objet CControl contient 4 attribut ( 2Strings et 2 entiers)

    Il faut que je mette un objet de ma liste chainée dans un vecteur?
    Puis que je met le vecteur dans le tableau?

    Si quelqu un a exemple complet je suis preneur car là je patine un peu .

  6. #6
    Membre actif
    Inscrit en
    Mai 2005
    Messages
    217
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 217
    Points : 220
    Points
    220
    Par défaut
    Un vecteur est un espace de stockage dynamique. Il fonctionne sur le meme principe que la liste chainée...

    Donc la en l'occurence, autant stocker directement tes objets CControle_agent_snmp dans le vecteur

  7. #7
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    Et n'oublie pas de les caster en les récupérant...
    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
     
     
    //ajout 
    monVector.addElement&#40;cControle_agent_snmp1&#41;;
    monVector.addElement&#40;cControle_agent_snmp2&#41;;
    monVector.addElement&#40;cControle_agent_snmp3&#41;;
    monVector.addElement&#40;cControle_agent_snmp4&#41;;
     
    //Récup
    for&#40;int i = 0 ; i < monVector&#40;&#41;.size&#40;&#41;;i++&#41;&#123;
        CControle_agent_snmp cTemp = &#40;CControle_agent_snmp&#41; monVector.elementAt&#40;i&#41;;
    // traitement pour chaque objet...
    cTemp.getString1&#40;&#41;;
    cTemp.getString2&#40;&#41;;
    cTemp.getInt1&#40;&#41;;
    cTemp.getInt2&#40;&#41;;
    ...
    &#125;
    +++
    Ju
    "Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
    Penser à svp

Discussions similaires

  1. remplir une jtable Partiellement
    Par alex68 dans le forum Composants
    Réponses: 2
    Dernier message: 23/08/2007, 16h52
  2. Besoin de conseils pour remplir une JTable.
    Par Mike888 dans le forum Composants
    Réponses: 13
    Dernier message: 16/05/2007, 16h06
  3. Remplir un Jtable apartir d'une base de donnees
    Par Clarissa2006 dans le forum Composants
    Réponses: 1
    Dernier message: 06/06/2006, 10h31
  4. comment remplir un jTable à partir d'un fichier texte
    Par @yoyo dans le forum Composants
    Réponses: 1
    Dernier message: 16/03/2006, 12h54
  5. [SWING] remplir une jtable avec une matrice de double
    Par Psykorel dans le forum Composants
    Réponses: 3
    Dernier message: 04/01/2006, 15h14

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