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 :

[JComboBox] raffraichir : removeAllItems(), updateUI();


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
    Septembre 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 101
    Par défaut [JComboBox] raffraichir : removeAllItems(), updateUI();
    Bonjour,
    J'ai un souci pour rafraichir une comboBox.
    Voici comment cela fonctionne. Dans un ComboBox 1, j'ai une liste de clients. Et j'aimerais que lorsque l'on choisi un client, dans le CbBox 2, il y soit affiché les comptes du client.
    Les clients sont stockés dans une ArrayList qui est transmise au premier CboBox.
    Pour remplir la 2ieme Liste, c'est un peu plus compliqué : je récupere l'id du Combobox Client et via cet id je recupere le nom du client dans l'array list Client. Ensuite, je fais une boucle qui transmet a un vecteur les comptes du client que j'affiche ensuite dans ma seconde liste. Via des System.println, on peux voir que cela fonctionne bien. Mon seul souci est de mettre à jour la 2ieme CBox.
    Voici des bouts de codes :
    Via ce code, je recupere l'id de l'AList Client pour ensuite aller cherche ses comptes via son nom
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    jCBnomclient.addActionListener(new java.awt.event.ActionListener() {
                                    public void actionPerformed(java.awt.event.ActionEvent e) {
                                            /* ici sera gérer le remplissage de la liste des comptes clients suivant le choix du client */
                                    System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
                                    JComboBox jCBnomclient = (JComboBox)e.getSource();
                                    int idclientliste = jCBnomclient.getSelectedIndex();
    Via cette boucle, je copie les comptes du client dans un vecteur dans le but de l'afficher dans la liste 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
            for (int i = 0; i < nomclientliste.sesComptes.size(); i++){
            vectcombo.addElement(nomclientliste.sesComptes.get(i));
            }
    Enfin, je transmet le vecteur au ComboBox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
      public JComboBox getJCBsescomptes() {
                    if (jCBsescomptes == null) {
                            jCBsescomptes = new JComboBox(vectcombo);
                            jCBsescomptes.addActionListener(new java.awt.event.ActionListener() {
                                    public void actionPerformed(java.awt.event.ActionEvent e) {
                                            System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
                                    }
                            });
                    }
    J'ai essayer de mettre un remvoveAllItems() juste apres le "if (jCBsescomptes == null) {" mais sa n'a pas fonctionner : java.lang.NullPointerException
    Idem pour le udpdate.UI();
    Selon moi, je pense qu'il faut mettre à jour la liste 2 avant de transmettre le vecteur non? J'ai l'impression de ne pas le placer ou il faut.
    Par contre, comme j'ai pas utilisé le addItem mais j'ai crée un JComboBox qui charge le vecteur dedans, c'est peut etre pour cela que la technique du allRemoveItem(); ne passe pas ?

    Je ne dois pas etre très loin de la solution!!!
    Merci à celui qui pourra m'orienter vers la lumière

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 101
    Par défaut
    Bon, j'ai toujours pas réussi.
    Ce matin, je croyais avoir eu une idée lumineuse mais en faite non..
    Personne pour m'orienter ?
    Je pense que le problème se situe uniquement dans le 2ieme CBBox car dans la console, les mises à jour se font bien lorsque je change de client...

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    En fait, tu crées un nouveau JComboBox, mais tu ne l'ajoutes pas au panneau.

    Je te conseille d'utiliser les modèles (voir la méthode JComboBox.getModel() et l'interface ComboBoxModel) , tu auras bien plus facile, crois-moi Ca n'a que des avantages : pas de scintillement, une programmation dite propre, pas besoin de réinventer la roue.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 101
    Par défaut
    Merci pour ta réponse mais je n'arrive pas a faire implémenter les méthodes cités...
    Pourrais tu m'en dire un peux plus?
    J'ai regarder sur la Javadoc :
    getModel()
    Returns the data model currently used by the JComboBox.
    Si j'ai bien compris, cela permet de retourner le type de Combobox utilisé..
    J'ai aussi regardé pour le ComboBoxModel
    setModel(ComboBoxModel aModel)
    Sets the data model that the JComboBox uses to obtain the list of items.
    Aurais tu un lien expliquant comment implémenter ses deux méthodes? Si j'ai compris, on lui demande de retourné le modèle de combobox utilisé puis d'établir une liste par la suite?!

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 101
    Par défaut
    Bonsoir,
    Bon, j'ai réussi à implémenter le "DefautComboBoxModel" mais le rafraichissement ne se fait toujours pas :S
    Voici comment j'ai procédé :
    Création du DefautComboBoxModel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DefaultComboBoxModel  listecompte = new  DefaultComboBoxModel();
    Remplissage du ComboBoxModel via la boucle "for"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            for (int i = 0; i < nomclientliste.sesComptes.size(); i++){
            listecompte.addElement(nomclientliste.sesComptes.get(i));
            }
    Retourner le JComboBox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    	public JComboBox getJCBsescomptes() {
    		if (jCBsescomptes == null) {
    			jCBsescomptes = new JComboBox(listecompte);
    			jCBsescomptes.addActionListener(new java.awt.event.ActionListener() {
    				public void actionPerformed(java.awt.event.ActionEvent e) {
    					System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
    				}
    			});
    		}
    Et cela ne fonctionne toujours pas...
    Si vous voulez, vous trouver mon code complet ici : http://rafb.net/p/rnayLA56.html

    Merci a celui qui pourra me trouver une solution!!

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    À priori, ton remplissage du modèle est bon. Tu ne vois pas l'ensemble des données qui sont ajoutées à la fin de ta combobox ?

    En fait, juste avant ta boucle qui ajoute les données dans le JComboBox, il faut supprimer tous les éléments courants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            listecompte.removeAllElements();
            for (int i = 0; i < nomclientliste.sesComptes.size(); i++){
            listecompte.addElement(nomclientliste.sesComptes.get(i));
            }
    Sinon, tu t'es pas mal débrouillé. Je t'aurais bien répondu avant, mais je suis peu disponible le week-end.

    Si tu as d'autres soucis, n'hésite pas

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

Discussions similaires

  1. [JComboBox] Mmise à jour contenu
    Par java_math dans le forum Composants
    Réponses: 4
    Dernier message: 16/07/2008, 19h27
  2. JComboBox action
    Par calypso dans le forum Composants
    Réponses: 4
    Dernier message: 02/08/2004, 16h41
  3. [jcombobox]l'élément affiché lié à un autre objet
    Par szdavid dans le forum Composants
    Réponses: 3
    Dernier message: 11/05/2004, 11h17
  4. [swing][JComboBox]Problème de taille
    Par n!co dans le forum Composants
    Réponses: 8
    Dernier message: 06/03/2004, 11h53
  5. Couleur d'une JComboBox disabled
    Par ced dans le forum Composants
    Réponses: 6
    Dernier message: 06/01/2004, 16h33

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