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 :

Problème avec JList


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2008
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 208
    Par défaut Problème avec JList
    salut,

    j'ai un problème concernant la remplissage de jList

    j'ai un jComboBox qui est rempli automatiquement de la base de donne

    et ca marche


    j'ajoute un bouton et je fait un test .

    selon mon choix il rempli le jList et ca marche avec sucée voila le code

    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
        private void validerActionPerformed(java.awt.event.ActionEvent evt) {                                        
     
     
     
     String choix = jComboBox1.getSelectedItem().toString();
     
     
              v = new Vector<Enseignant>();
            Iterator<Enseignant> l = eDB.findAll().iterator();
            while (l.hasNext()) {
                Enseignant e = l.next();
                if(e.getPU().equalsIgnoreCase(choix))
                {
                    v.add(e);
                    jList1.setListData(v);
     
            }
     
     
            }
    }

    avec biensur la déclaration
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Vector<Enseignant> v;
             EnseignantDB eDB = new EnseignantDB();
    et pour la classe EnseigantDB j'ai une méthode findAll() qui retourne une liste d'enseignant.


    mon problème qui quant je clique pour la première fois sur le bouton il rempli jList avec l'enseignant qui vérifier la condition

    ca marcha avec sucé mais quant je clique pour la deuxième fois il m'affiche c vrai le résultat juste mais 2 fois

    de même quant je clique pour la troisième fois il m'affiche 3 fois

    j'essaye avec cette manière : au debut de code pour le bouton j'ajoute

    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
    private void validerActionPerformed(java.awt.event.ActionEvent evt) {                                        
    jList1.removeAll();
     
     
     String choix = jComboBox1.getSelectedItem().toString();
     
     
              v = new Vector<Enseignant>();
            Iterator<Enseignant> l = eDB.findAll().iterator();
            while (l.hasNext()) {
                Enseignant e = l.next();
                if(e.getPU().equalsIgnoreCase(choix))
                {
                    v.add(e);
                    jList1.setListData(v);
     
            }
     
     
            }
    }

    mais le problème reste le même

    merci d'avance

  2. #2
    Membre confirmé Avatar de Jose.N70
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2009
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2009
    Messages : 162
    Par défaut
    Bonjour, tu peux éventuellement utiliser un modèle sur la Jlist et faire une manip dans ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     DefaultListModel dm = new DefaultListModel();
     dm.addElement("");
     jList1.setModel(dm);
    C'est une simple idée ...

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2008
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 208
    Par défaut
    j'essaye avec ce code mais le même problème reste encore

    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
     
        private void validerActionPerformed(java.awt.event.ActionEvent evt) {                                        
              DefaultListModel dm = new DefaultListModel();
            dm.clear();   // pour rafraichir si on clique une deuxième fois sur le bouton ici le problème que je dois le corriger 
            String choix = jComboBox1.getSelectedItem().toString();
     
     
            v = new Vector<Enseignant>();
            Iterator<Enseignant> l = eDB.findAll().iterator();
            while (l.hasNext()) {
                Enseignant e = l.next();
                if(e.getPU().equalsIgnoreCase(choix)) {
                    v.add(e);
                    dm.addElement(v);
                    jList1.setModel(dm);
     
     
     
     
                }
    }
    }
    est ce que ce possible sans utiliser "DefaultListModel " avec directement une methode de jlist (j'essaye avec jList1.repaint(); et jList1.clear()) mais le probleme rest toujours (juste affichage juste pour la premiere fois)

    l'erreur de "DefaultListModel" est si j'ai deux enseignant en premier lieux qui vérifie la condition (je parle pour le premier clique sur je bouton de test) il m'affiche le résultat 2 fois

  4. #4
    Membre confirmé Avatar de Jose.N70
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2009
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2009
    Messages : 162
    Par défaut
    J'utilise également une JList qui doit agir plus ou moins comme toi, voici ma façon de faire ( peut être pas la meilleur )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public DefaultListModel listModel;
    public JList list;
    ...
    ... 
     
    listModel = new DefaultListModel();
    list = new JList(listModel);
    Puis pour vider et avant de recharger ma liste j'ai une methode comme celle ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public void clear(){
    	list.removeAll();
    	listModel = null;
    	listModel = new DefaultListModel();
    	list.setModel(listModel);		
    }

  5. #5
    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
    a chaque appel de findAll vous ajoutez des enseignant à la List qui se trouve dans DAO. Sois vous ne remplissez qu'une seule fois la liste, soit vous la videz avant de la remplir!

  6. #6
    Membre confirmé
    Inscrit en
    Novembre 2008
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 208
    Par défaut
    merci pour votre intérêt .

    le problème est comment vider ma jlist (avec jList1.clear(), jList1.repaint(),jList1.removeAll() je n'arrive pas a vider la jlist)

  7. #7
    Membre confirmé
    Inscrit en
    Novembre 2008
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 208
    Par défaut
    le code de la class EnseignantDB est :

    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
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    import java.sql.*;
    import java.util.ArrayList;
    import java.util.List;
     
     
     
    public class EnseignantDB {
       public  EnseignantDB(){
     
        }
        List enseignants = new ArrayList<Enseignant>();
     
      public  List  findAll() {
     
             connection b = new connection();
     
              try {
     
                    b.prepare = (PreparedStatement) b.conn.prepareStatement("select * from enseignant");
                    b.result=b.prepare.executeQuery();
                    while(b.result.next())
                  {
                        Enseignant e=new Enseignant();
     
                                    e.setCin(b.result.getString("cin"));
                                    e.setNom(b.result.getString("nom"));
                                    e.setPrenom(b.result.getString("prenom"));
                                    e.setTel(b.result.getString("tel"));
                                    e.setEmail(b.result.getString("email"));
                                    e.setLogin(b.result.getString("login"));
                                    e.setPassword(b.result.getString("password"));
                                    e.setPu(b.result.getString("pu"));
     
     
                                    enseignants.add(e);
     
     
                  }
            }catch(SQLException e){
                System.err.println(e);
            }
            return  enseignants;
          }
    }
    le code de la class connection.
    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
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
     
     
    public class connection {
    public static Connection conn =null;
    	public PreparedStatement prepare=null;
    	public ResultSet result=null;
    	public connection()
    	{
     
    		try {
    			Class.forName("com.mysql.jdbc.Driver");
     
     
    			String url = "jdbc:mysql://localhost/mabase";
    			String user = "root";
    			String passwd = "root";
     
    			 conn = (Connection) DriverManager.getConnection(url, user, passwd);
     
     
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
     
     
            }
    }

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

Discussions similaires

  1. Problème avec JList()
    Par chebmo1986 dans le forum Composants
    Réponses: 0
    Dernier message: 04/03/2009, 17h12
  2. Problème avec Jlist()
    Par chebmo1986 dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 11/02/2009, 20h14
  3. Problème avec Jlist()
    Par chebmo1986 dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 26/01/2009, 00h58
  4. problème avec JList
    Par lenetfm dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 21/03/2008, 18h11
  5. problème avec JList
    Par kamikazbe dans le forum Composants
    Réponses: 2
    Dernier message: 20/05/2007, 21h27

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