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

Java Discussion :

Pas moyen de récupérér un Vector


Sujet :

Java

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2009
    Messages : 37
    Par défaut Pas moyen de récupérér un Vector
    Bonjour,

    Comme je suis un peu débutant en Java je vous explique mon problème. Je stocke des enregistrements en XML et je veux les afficher dans un appelet Java (dans un JTable). J'ai créé une première classe pour récupérer ces données (comme je travaille dans Eclipse les System.out.println(); à la fin c'est juste pour vérifier dans la console que j'ai bien les enregistrements) Voici ma classe:
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
     
    import java.io.File;
    import java.io.IOException;
    import java.util.List;
    import java.util.Vector;
    import org.jdom.Document;
    import org.jdom.Element;
    import org.jdom.JDOMException;
    import org.jdom.input.SAXBuilder;
     
    public class XMLData {
     
    	public static class Membre {
     
    		public String prenom;
    		public String nom;
    		public String exp;
    		public String elo;
    		public String elomax;
    		public String tel;
    		public String mail;
    		public String actif;
     
    		public Membre(String p,   String n, String ex, String el, 
    				      String elm, String t, String em, String a) {
    		    this.prenom = p;
    		    this.nom    = n;
    		    this.exp    = ex;
    		    this.elo    = el;
    		    this.elomax = elm;
    		    this.tel    = t;
    		    this.mail   = em;
    		    this.actif  = a;
    		}
     
    	    }
     
    	    static Vector<Membre> listeDesMembres = new Vector<Membre>();
     
    	    public static void ajoutMembre(Membre m) {
    		listeDesMembres.add(m);
    	    }
     
    	public static Vector<Membre> ListeMembres() {
     
    		SAXBuilder builder = new SAXBuilder();
    		File xmlfile = new File("membres.xml");
     
    		  try {
     
    				Document document = (Document) builder.build(xmlfile);
    				Element rootNode = document.getRootElement();
    				@SuppressWarnings("rawtypes")
    				List list = rootNode.getChildren("membre");
     
    				for (int i = 0; i < list.size(); i++) {
     
    				   Element node = (Element)list.get(i);
     
    				   ajoutMembre(new Membre(node.getChildText("prenom"),
    						       			  node.getChildText("nom"),
    						       			  node.getChildText("exp"),
    						       			  node.getChildText("elo"),
    						       			  node.getChildText("elomax"),
    						       			  node.getChildText("tel"),
    						       			  node.getChildText("mail"),
    						       			  node.getChildText("actif"))); 
     
    				   System.out.println("Prenom " + node.getChildText("prenom"));
    				   System.out.println("Nom "    + node.getChildText("nom"));
    				   System.out.println("Exp "    + node.getChildText("exp"));
    				   System.out.println("Elo "    + node.getChildText("elo"));
    				   System.out.println("EloMax " + node.getChildText("elomax"));
    				   System.out.println("Tel "    + node.getChildText("tel"));
    				   System.out.println("Email "  + node.getChildText("mail"));
    				   System.out.println("Actif "  + node.getChildText("actif"));
    				   System.out.println();
     
    				}
     
    				System.out.println ("Nombre de membres : " + listeDesMembres.size());
     
    			  } catch (IOException io) {
    				System.out.println(io.getMessage());
    			  } catch (JDOMException jdomex) {
    				System.out.println(jdomex.getMessage());
    			  }
     
    		  return listeDesMembres;}
    	}
    Mon souci arrive à l'affichage des données, je trouve pas le problème même avec les propositions d'Eclipse :
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    import java.awt.BorderLayout;
    import java.util.Iterator;
    import java.util.Vector;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableCellRenderer;
    
    public class AfficheMembres extends JFrame {
    
    	private static final long serialVersionUID = 1L;
    	
    	private void centrerTable(JTable table) {
    	  DefaultTableCellRenderer custom = new DefaultTableCellRenderer();
    	  custom.setHorizontalAlignment(JLabel.CENTER);
    	  for (int i=0 ; i<table.getColumnCount() ; i++)
    	  table.getColumnModel().getColumn(i).setCellRenderer(custom);
    	}
    	
    	public AfficheMembres() {
            super();
            new XMLData();
            
             // le problème se situe ici
            Vector<Membre> Membres = XMLData.ListeMembres();
            
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
            
             // l'Iterator ne marche pas non plus
            Iterator <listeDesMembres> e = listeDesMembres.iterator(); 
                   while(e.hasNext()){ 
                       }
    .........
    Dans un premier temps Eclipse dit "Member cannot be resolved to a type" et il propose "Import 'Membre'(XMLData)" mais l'import dit : "The import XMLData cannot be resolved"...

    Une idéé??
    Merci d'avance mra_ch

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Tu devra faire un import de ta classe interne Membre. Par contre tu ne pourra pas car tu as fait l'erreur de ne pas mettre XMLData dans un package. Hors en java toutes les classes doivent se trouver dans des packages. Déplace donc ta classe XMLData et tes autres classes aussi dans un package et importe tonpackage.XMLData.Membre.

    Quelque remarques: les méthodes en java devraient toujours commencer par une minuscule. Aussi il n'y a pas de raison logique à faire de Membre une classe interne à XMLData.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2009
    Messages : 37
    Par défaut La notion de package
    Je vous remercie pour votre réponse. Comme je l'ai précisé au début de mon message, je travaille dans Eclipse et pour mon projet les 2 classes "XMLData" et "AfficheMembres" se trouvent dans le même package. Si j'enlève ce bout de code qui consiste à récupérer le Vecteur, tout marche bien et comme je l'ai dit dans mon précédent message "import XMLData.Membre" crée une erreur dans Eclipse...
    Je sais pas comment avancer...

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    d'après le code que tu nous donne et l'import que tu nous donne, non, ces classes ne sont pas dans un package.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2009
    Messages : 37
    Par défaut La notion de package
    Regardez le côté gauche de l'image, les 2 classes sont dans le même package :
    (XMLData je l'ai renommée en ReadXML)

    Nom : Capturer.JPG
Affichages : 78
Taille : 88,1 Ko

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    Tchize a raison.
    Default package => Pas de package

    Si tu n'as pas la ligne "package x.y.z" en haut de tes classes, elles ne sont pas dans un package.

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2009
    Messages : 37
    Par défaut La notion de package
    Je vous remercie, en fait il s'agissait de ma part d'une mauvaise connaissance d'Eclipse.Une fois que j'ai mis mes classes dans un package(autre que celui par défaut) le code a fonctionné.
    Merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pas moyen d'installer k3b sur debian
    Par ZiMo dans le forum Applications et environnements graphiques
    Réponses: 30
    Dernier message: 20/12/2005, 17h09
  2. [VB.NET] Pas moyen dafficher un integer
    Par guillaume1998 dans le forum VB.NET
    Réponses: 11
    Dernier message: 11/11/2005, 16h17
  3. J'ai du son mais pas moyen de lire cd ou mp3
    Par kaygee dans le forum Applications et environnements graphiques
    Réponses: 9
    Dernier message: 29/10/2005, 20h12
  4. pas moyen de trouver l'erreur de ce code Javascript !!!
    Par NATHW dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 25/11/2004, 21h47
  5. [JFrame] Pas moyen d'avoir une fenetre active
    Par deedji dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 24/05/2004, 16h08

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