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 :

ArrayList et JComboBox


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 40
    Par défaut
    Bonjour à tous, il y a un truc qui m'échappe dans le code ci-dessous :

    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
            JComboBox choix_projet = new JComboBox();
     
            List listefinale = new ArrayList();
     
                List l = new ArrayList();
                    l.add("essai 1");
                    l.add("essai 2");                
                List l2 = new ArrayList();
                    l2.add("essai a");
                    l2.add("essai b");
     
            listefinale.add(l);
            listefinale.add(l2);
     
            choix_projet.addItem(listefinale.get(0));
            choix_projet.addItem(listefinale.get(1));
     
     
            System.out.println(choix_projet.getItemAt(1));
    Ca m'affiche [essai a, essai b] ce qui est logique, mais comment afficher juste "eesai b" ?

    Merci d'avance pour votre aide

  2. #2
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    C'est logique ça t'affiche la liste L2 qui est l'élément à l'index 1 de ta combobox.

    si tu veux que choix_projet.getItemAt(1) te renvoie "essai b" il faut construire ta combobox comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    choix_projet.addItem("essai a");
    choix_projet.addItem("essai b");

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 197
    Par défaut
    tu as une liste dans une autre liste donc c'est normal que ça te renvoie les 2 valeurs de la liste.
    pour n'afficher que "essai b" tu dois prendre cette valeur dans la liste qui se trouve dans l'autre comme ça :

    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
    JComboBox choix_projet = new JComboBox();
     
    List<List> listefinale = new ArrayList<List>();
     
    List l = new ArrayList();
    l.add("essai 1");
    l.add("essai 2");
    List l2 = new ArrayList();
    l2.add("essai a");
    l2.add("essai b");
     
    listefinale.add(l);
    listefinale.add(l2);
     
    choix_projet.addItem(listefinale.get(0));
    // dans ce cas tu ne met que la valeur "essai b" dans ton item et pas la liste contenant les 2.
    choix_projet.addItem(listefinale.get(1).get(1));
     
    System.out.println(choix_projet.getItemAt(1));
    sinon si tu veux garder une liste dedan tu dois transtyper ton objet récupéré en liste et récupérer la valeur de cette liste :

    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
    JComboBox choix_projet = new JComboBox();
     
    List<List> listefinale = new ArrayList<List>();
     
    List l = new ArrayList();
    l.add("essai 1");
    l.add("essai 2");
    List l2 = new ArrayList();
    l2.add("essai a");
    l2.add("essai b");
     
    listefinale.add(l);
    listefinale.add(l2);
     
    choix_projet.addItem(listefinale.get(0));
    choix_projet.addItem(listefinale.get(1));
    // Tu récupère le 2ème index de ta liste que tu écris directement.
    System.out.println(((List)choix_projet.getItemAt(1)).get(1));

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 40
    Par défaut
    Merci pour ces explications ,

    il reste cependant un point à éclaircir : comment faire pour n'afficher dans la combobox le premier élément de ma liste l ou l2.

    Car là j'ai [essai1, essai2] et [essai a, essai b] d'affichés

    merci

  5. #5
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    Soit tu surcharges la méthode toString() de tes listes soit tu écris un renderer pour ta combobox.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 40
    Par défaut
    Rebonjour,

    j'ai essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
                            choix_projet.setRenderer(new DefaultListCellRenderer() {
                                @Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
                                    int selectedIndex = ((Integer)value).intValue();
                                    super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
                                    setText(((List)choix_projet.getItemAt(selectedIndex)).get(1));
                                    return this;
     
                                }
                            });
    Mais il me met une erreur sur le setText alors qu'il y en a pas si je mets quelque chose de statique comme setText("exemple")

    Une idée de où ca pourrait venir ?

    merci

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

Discussions similaires

  1. JComboBox / ArrayList - valeurs distinctes
    Par dieu08 dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 09/11/2012, 09h29
  2. Renseigner une jComboBox à partir d'une ArrayList
    Par Deallyra dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 22/03/2009, 15h05
  3. Réponses: 6
    Dernier message: 19/07/2007, 13h07
  4. [ STRUTS ][ JSP ][ ArrayList] un lien pour trier
    Par LoulouFifi dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 03/02/2004, 17h24
  5. Couleur d'une JComboBox disabled
    Par ced dans le forum Composants
    Réponses: 6
    Dernier message: 06/01/2004, 15h33

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