Partage
  • Partager sur Facebook
  • Partager sur Twitter

JComboBox

Multi colonnes

Sujet résolu
    25 mars 2009 à 9:31:28

    Bonjour à tous,

    J'ai un petit problème avec une JComboBox. Je voudrais l'initialiser avec le code du pays et le nom du pays.
    Lorsque l'utilisateur cliquera sur le nom du pays, je voudrais que l'index renvoyé soit le code de ce pays.

    Quelle est la méthode à adopter?
    • Partager sur Facebook
    • Partager sur Twitter
      25 mars 2009 à 9:40:40

      Je vois deux solutions :
      - Soit tu maintiens deux listes ou tableaux parralèles, une pour remplir la combo box et l'autre pour avoir les codes correspondants.
      Tu récupéreras le code avec quelque chose comme codes[combo.getSelectedIndex()]

      - Ou mieux du point de vue purement POO, vu que les combo peuvent accepter des objets de n'importe quel type et pas seulement des strings, tu crées une classe qui contient les deux informations, pays et code. Tu utilises getSelectedItem à la place de getSelectedIndex pour récupérer la sélection, et pour s'assurer que seul le nom s'affiche tu surcharges toString.
      • Partager sur Facebook
      • Partager sur Twitter
        25 mars 2009 à 9:49:08

        Merci pour ta réponse rapide, effectivement je suis partie sur la deuxième solution orienté POO.
        J'ai créé une classe Pays avec comme attribu le code du pays et le nom du pays. Pour initialiser ma JComboBox Pays, j'utilise un vecteur de Pays. Le problème est que le getSelectedItem me renvoi l'index de la ligne sélectionné et non pas le code du pays. Il y a quelque chose qui m'échappe
        • Partager sur Facebook
        • Partager sur Twitter
          25 mars 2009 à 10:31:45

          Normalement ca marche,
          au pire essaye :
          getItemAt(MaCombo.getSelectedIndex());

          Ce qui revient a reproduire le getSelectedItem() !
          • Partager sur Facebook
          • Partager sur Twitter
            25 mars 2009 à 11:11:35

            je me retourne vers vous car je n'y arrive pas :

            Pour résumer, j'ai créé une classe Pays avec comme propriété un codePays et un nomPays.
            J'ai une méthode qui me renvoie un Vecteur de cette classe pays.

            Je veux initialiser une comboBox avec ce Vecteur de pays, voici le code :

            Citation : Code

            for(int i=0;i<this.vecteurPays.size();i++)
            {
            jComboPays.addItem(this.vecteurPays.elementAt(i).toString());
            }


            J'ai surchargé la méthode toString dans la classe Pays pour qu'il n'affiche que le nom du pays.

            Maintenant lorsque je fais le jComboPays.getSelectedItem(), cela ne renvoie pas le code du pays et je pense que c'est normal, il faudrait plutot que ce soit du genre jComboPays.getSelectedItem().getCodePays() mais je n'est pas le droit de faire ceci, pourtant les éléments de ma jComboPays sont de la classe Pays.
            :-(
            • Partager sur Facebook
            • Partager sur Twitter
              25 mars 2009 à 11:19:01

              Je pense qu'il faut que tu fasse :
              jComboPays.addItem(this.vecteurPays.elementAt(i));
              En fait c'est la JComboBox qui va afficher ton objet par l'intermédiaire de la fonction toString().
              • Partager sur Facebook
              • Partager sur Twitter
                25 mars 2009 à 11:35:28

                Merci a tous les 2, grace a vous j'ai solutionné mon problème.

                Pour récupérer la valeur du code de mon pays sélectionné je n'ai plus qu'a faire :

                Citation : Code

                Pays p;
                p = (Pays) jComboPays.getSelectedItem();
                System.out.println(p.getCodePays());


                • Partager sur Facebook
                • Partager sur Twitter

                JComboBox

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown