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 :

AbstractListModel et Collection


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 68
    Par défaut AbstractListModel et Collection
    Bonjour,

    J'ai un petit soucis je n'arrive pas à récupérer ma collection dans mon AbstractListModel afin d'ajouter ca dans ma Jlist. Voici mes codes :

    Main
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    monAnnuaire.remplir_collection();
    List_Contact.setModel(new ListData());
    Petit détail, j'arrive a afficher ce que possède ma collection, elle est bien implémenté. Pour pouvoir récupérer ma collection je l'ai rendu public :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public Contact[] MesContacts;
    Et voici la ou je bloque, je n'ai pas d'erreurs mais ca n'affiche rien,
    AbstractListModel :

    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
     
    import javax.swing.AbstractListModel;
     
    class ListData extends AbstractListModel {
    	ConnectSQL connectSQL = new ConnectSQL();
    	Annuaire monAnnuaire = new Annuaire();
    	Contact[] Contacts = monAnnuaire.MesContacts;
    	String[] tab_contact = new String[Contacts.length];
     
    	ListData() {
    		for (int i = 0; i < tab_contact.length; i++) {
    			tab_contact[i] = Contacts[i].getPrenom();
    			System.out.println(tab_contact[i]);
    		}
    	}
     
    	public int getSize() {
    		return tab_contact.length;
    	}
     
    	public Object getElementAt(int index) {
    		return tab_contact[index];
      	}
    }
    Merci de votre aide, bonne journée

  2. #2
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 47
    Par défaut
    La seule raison que je pourrais voir avec le code présent serait une mauvaise initialisation de MesContacts... Pour plus de détail, il va falloir nous montrer plus de code.

    D'ailleurs en passant, au lieu de rendre la variable publique, crée des accesseurs (get et set) publique permettant de la récupérer, ça fait plus orienté objet

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 68
    Par défaut
    En fait je crois savoir ce qu'il se passe, le constructeur de ma collection initialise mon tableau de contact à 0 donc lorsque j'instancie ma classe annuaire obligatoirement mon tableau de contact retourne à 0.

    Comment je peux récupérer mon tableau de contact dans mon model de ma JList ?

    Voici mes codes :

    Annuaire :
    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
     
    import java.sql.ResultSet;
    import java.util.Arrays;
     
     
    public class Annuaire {
    	public static Contact[] MesContacts;
    	ConnectSQL connectSQL = new ConnectSQL();
     
    	Annuaire() {
    		MesContacts = new Contact[0];
    	}
     
    	public void ajouter(Contact c) {
    		Contact[] CopieDeMesContacts = new Contact[MesContacts.length + 1];
    		for (int i = 0; i < MesContacts.length ; i++)
    			CopieDeMesContacts[i] = this.MesContacts[i];
    		CopieDeMesContacts[this.MesContacts.length] = c;
    		this.MesContacts = CopieDeMesContacts;
    	}
     
    	public void remplir_collection() {
    		try {	
    			connectSQL.start("jdbc:mysql://localhost:3306/annuaire", "root", "");
    			ResultSet rs;			
    			rs = connectSQL.stmt.executeQuery("SELECT * FROM contact");
     
    			while (rs.next()) {
    				String Nom = rs.getString("nom");
    				String Prenom = rs.getString("prenom");
    				String Adresse_1 = rs.getString("adresse_1");
    				String Addresse_2 = rs.getString("adresse_2");
    				Integer Cp = rs.getInt("cp");
    				String Ville = rs.getString("ville");
    				String Email = rs.getString("email");
    				Integer Fixe = rs.getInt("fixe");
    				Integer Mobile = rs.getInt("mobile");
     
    				ajouter(new Contact(Nom, Prenom, Adresse_1, Addresse_2, Cp, Ville, Email, Fixe, Mobile));
    			}
    			connectSQL.stop();
    		}
    		catch (Exception e) {
    			System.err.println("Erreur !");
    			System.err.println(e.getMessage());
    		}		
    	}
     
    	public String[] remplir_liste() {
    		String tab_contact[] = new String[MesContacts.length];
    		for (int i = 0; i < tab_contact.length; i++)
    			tab_contact[i] = MesContacts[i].getPrenom() +" "+ MesContacts[i].getNom();
    			Arrays.sort(tab_contact);
    		return tab_contact;
    	}
     
    	public int id_liste(String s) {
    		int id = 0;
     
    		String str[]=s.split(" ");
    		for (int i = 0; i < MesContacts.length; i++) {
    			if (MesContacts[i].getPrenom().equals(str[0]) && MesContacts[i].getNom().equals(str[1]))
    				id = i;
    		}
     
    		return id;
    	}
     
    	public void afficher() {
    		for (int i = 0; i < MesContacts.length; i++) {
    			System.out.println(MesContacts[i].getNom());
    			System.out.println(MesContacts[i].getPrenom());
    			System.out.println(MesContacts[i].getAdresse_1());
    			System.out.println(MesContacts[i].getAdresse_2());
    			System.out.println(MesContacts[i].getCp());
    			System.out.println(MesContacts[i].getVille());
    			System.out.println(MesContacts[i].getEmail());
    			System.out.println(MesContacts[i].getFixe());
    			System.out.println(MesContacts[i].getMobile());
    		}
    	}
    }
    Model :
    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
     
     
    import javax.swing.AbstractListModel;
     
    class ListData extends AbstractListModel {
    	ConnectSQL connectSQL = new ConnectSQL();
    	Annuaire monAnnuaire = new Annuaire();
    	Contact[] Contacts = monAnnuaire.MesContacts;
    	String[] tab_contact = new String[Contacts.length];
     
    	ListData() {
    		for (int i = 0; i < tab_contact.length; i++) {
    			tab_contact[i] = Contacts[i].getPrenom();
    			System.out.println(tab_contact[i]);
    		}
    	}
     
    	public int getSize() {
    		return tab_contact.length;
    	}
     
    	public Object getElementAt(int index) {
    		return tab_contact[index];
      	}
    }

  4. #4
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 47
    Par défaut
    Plusieurs solutions, il s'agit simplement de t'assurer qu'entre l'instanciation de ta classe annuaire, et la récupération des valeurs des contacts, tu appelles la méthode remplir_collection()

    Ou alors, tu peux aussi directement placer la méthode dans le constructeur d'annuaire, juste après l'instanciation de ton tableau de contact, comme ça dès que tu créeras un annuaire, tes contacts seront chargés en mémoire...

    C'est à toi de voir quelle solution est la meilleurs suivant ton programme, si tu préfère retarder le chargement des contacts au moment où tu en as besoin, où alors la charger directement...

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

Discussions similaires

  1. []Erreur sur second emploi collection binding
    Par jacma dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 08/03/2004, 18h02
  2. [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
  3. [VB6] la collection controls
    Par tomnie dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 30/04/2003, 17h03
  4. Comment créér une collection sous Delphi
    Par PsyKroPack dans le forum Langage
    Réponses: 6
    Dernier message: 11/02/2003, 13h20
  5. [VB6] Modifier la clé d'un élément d'une collection
    Par Ricou13 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 21/11/2002, 14h49

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