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 :

JComboBox à 2 colonnes


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 15
    Par défaut JComboBox à 2 colonnes
    Bonjour à tous,

    Mon problème est peut être banal, mais j'aimerais remplir une JCombox avec 2 champs provenant d'une bdd (Un champ 'id' et un champ 'name') et que seul le champ name soit afficher dans la combo. Lorsque l'utilisateur a fait son choix, je récupère l'id...

    Pouvez-vous me dire comment faire car j'ai pas trouvé d'infos sur le net ?

    Merci

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Il te faut créer un objet contenant l'id et le nom.

    Puis créer la combo box en lui fournissant une collection ou un tableau de ces objets.

    Enfin affecter un Renderer spécifique à cette combo box pour qu'elle n'affiche que le nom.

    Un tuto sur les renderers (et les combo boxes en général).

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 15
    Par défaut
    Merci pour cette réponse. Cela fonctionne en redéfinissant la méthode toString().

    Si je souhaite faire la même chose avec une JTable (champ id non affiché), dois-je procéder de la même manière (avec des objets, methode toString() etc ...) ou y a t-il un autre moyen ?

    D'avance merci

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Là il va te falloir soit créer un modèle maison soit écrire un renderer maison pour ton objet. C'est bien plus propre que le toString() qui est à la limite du drity hack. Et puis bien plus évolutif.

  5. #5
    Membre éclairé
    Homme Profil pro
    NoOb
    Inscrit en
    Mai 2007
    Messages
    554
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : NoOb

    Informations forums :
    Inscription : Mai 2007
    Messages : 554
    Par défaut
    Personnellement je fait comme ca :

    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
    public class JComboBoxRenderer extends JLabel implements ListCellRenderer {
     
        public JComboBoxRenderer() {
            super();
        }
     
        @Override
        public Component getListCellRendererComponent(final JList list, final Object value, final int index, final boolean isSelected, final boolean cellHasFocus) {
     
            if (value instanceof cetteClasse) {
                // alors je sais que je ne dois afficher que le nom par exemple
                cetteClasse arf = (cetteClasse) value;
                this.setText(arf.getnom());
            }
            return this;
        }
    }
    Je pense que c'est 'propre', mais je pense seulement .

Discussions similaires

  1. Jtable avec model, avec une colonne JComboBox avec model
    Par rednight dans le forum Composants
    Réponses: 2
    Dernier message: 18/11/2013, 12h58
  2. JCombobox à 2 colonnes
    Par melanifolk dans le forum Débuter
    Réponses: 4
    Dernier message: 06/02/2013, 15h41
  3. JComboBox Multi colonnes
    Par Jason13 dans le forum Composants
    Réponses: 2
    Dernier message: 05/08/2009, 00h09
  4. Mettre 2 colonnes dans un JComboBox
    Par legillou dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 17/05/2006, 17h37
  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