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

AWT/Swing Java Discussion :

liste déroulante et chnagement d'items


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Développeur informatique
    Inscrit en
    Juillet 2006
    Messages
    3
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3
    Par défaut liste déroulante et chnagement d'items
    j'ai une liste deroulante JComboBox,deux listes en fait, je veus que chaque fois que je selectionne un item de la première liste la deuxième liste change de contenu chaque fois aussi

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Par défaut
    Bonjour,

    Le tutoriel de SUN me semble assez bien fait :
    http://java.sun.com/docs/books/tutor.../combobox.html

    Ci-dessous un exemple compilable et exécutable. Tout item sélectionné dans la JComboBox de gauche se rajoute à celle de droite, sauf s'il s'y trouve déjà.
    C'est juste un exemple de base. On peut aller plus loin dans le sens de l'architecture MVC (modèle vue contrôleur) en implémentant correctement les modèles derrière les JComboBox.

    Nicolas

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    // appeler le fichier Exemple048_Swing_JComboBox.java
    // Nicolas_75, 6 septembre 2006
    // http://www.developpez.net/forums/showthread.php?t=206292
    // tutoriel JComboBox : http://java.sun.com/docs/books/tutorial/uiswing/components/combobox.html
     
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
     
    public class Exemple048_Swing_JComboBox extends JFrame {
     
        public Exemple048_Swing_JComboBox() {
     
            // initialisation de la JFrame
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
            // initialisation de la 2nde JCombobox,
            // nécessaire pour l'ActionListener ci-dessous
            final JComboBox box2 = new JComboBox();
            // final ci-dessus pour permettre l'accès depuis le listener interne
     
            // première JComboBox
            String[] values1 = {"Elem1", "Elem2", "Elem3", "Elem4", "Elem5"} ;
            final JComboBox box1 = new JComboBox(values1);
            // final ci-dessus pour permettre l'accès depuis le listener interne
            box1.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent ae) {
                    String selectedItem = (String) box1.getSelectedItem();
                    // ajoutons l'item sélectionné à gauche dans le JComboBox de droite
                    // mais uniquement si ce dernier ne le contient pas déjà
                    ComboBoxModel model = box2.getModel();
                    boolean alreadyInBox2 = false;
                    int i=0;
                    while ((!alreadyInBox2) && (i<model.getSize())) {
                        if ((String) model.getElementAt(i) == selectedItem) alreadyInBox2 = true;
                        i++;
                    }
                    if (!alreadyInBox2) box2.addItem(selectedItem);
                }
            });
            box1.setPreferredSize(new Dimension(100,40));
            this.add(box1,BorderLayout.WEST);
     
            // inclusion de la JComboBox dans la JFrame
            box2.setPreferredSize(new Dimension(100,40));
            this.add(box2,BorderLayout.EAST);
     
            // affichage de la JFrame :
            this.pack();
        }
     
        public static void main(String[] args) {
            Exemple048_Swing_JComboBox myFrame = new Exemple048_Swing_JComboBox();
            myFrame.setVisible(true);
        }
    }

  3. #3
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut
    Salut,
    Bon je chipote un peu mais je pense que c'est plus correct ainsi. J'ai juste remplacé == par equals

    Citation Envoyé par Nicolas_75
    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    // appeler le fichier Exemple048_Swing_JComboBox.java
    // Nicolas_75, 6 septembre 2006
    // http://www.developpez.net/forums/showthread.php?t=206292
    // tutoriel JComboBox : http://java.sun.com/docs/books/tutorial/uiswing/components/combobox.html
    
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    public class Exemple048_Swing_JComboBox extends JFrame {
        
        public Exemple048_Swing_JComboBox() {
            
            // initialisation de la JFrame
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            
            // initialisation de la 2nde JCombobox,
            // nécessaire pour l'ActionListener ci-dessous
            final JComboBox box2 = new JComboBox();
            // final ci-dessus pour permettre l'accès depuis le listener interne
            
            // première JComboBox
            String[] values1 = {"Elem1", "Elem2", "Elem3", "Elem4", "Elem5"} ;
            final JComboBox box1 = new JComboBox(values1);
            // final ci-dessus pour permettre l'accès depuis le listener interne
            box1.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent ae) {
                    String selectedItem = (String) box1.getSelectedItem();
                    // ajoutons l'item sélectionné à gauche dans le JComboBox de droite
                    // mais uniquement si ce dernier ne le contient pas déjà
                    ComboBoxModel model = box2.getModel();
                    boolean alreadyInBox2 = false;
                    int i=0;
                    while ((!alreadyInBox2) && (i<model.getSize())) {
                        if (((String) model.getElementAt(i)).equals(selectedItem)) alreadyInBox2 = true;
                        i++;
                    }
                    if (!alreadyInBox2) box2.addItem(selectedItem);
                }
            });
            box1.setPreferredSize(new Dimension(100,40));
            this.add(box1,BorderLayout.WEST);
            
            // inclusion de la JComboBox dans la JFrame
            box2.setPreferredSize(new Dimension(100,40));
            this.add(box2,BorderLayout.EAST);
            
            // affichage de la JFrame :
            this.pack();
        }
        
        public static void main(String[] args) {
            Exemple048_Swing_JComboBox myFrame = new Exemple048_Swing_JComboBox();
            myFrame.setVisible(true);
        }
    }


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Par défaut
    Bonjour, et merci de la remarque.

    Dans ce cas précis, où on ajoute bien à la JComboBox de droite des chaînes extraites de la JComboBox de gauche (donc avec le même contenu, mais surtout la même référence), le == donne bien le comportement attendu.

    Mais, dans un contexte différent ou si on rajoute d'autres fonctionnalités à l'application, il pourrait ne pas en être de même, et il serait nécessaire de remplacer par .equals, pour ne pas tomber dans l'une des erreurs type de la programmation en Java (et difficile à repérer).

    Du moins me semble-t-il.

    Merci encore,

    Nicolas

  5. #5
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut
    Ton exemple marche si la deuxième JComboBox est initialement vide, or dans le post initial c'est pas dit .


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Par défaut
    Je ne souhaitais pas polémiquer, loin de là. Je suis d'accord avec ta dernière remarque.

Discussions similaires

  1. Cherche liste déroulante avec sélection d'item
    Par tafkap dans le forum Flex
    Réponses: 0
    Dernier message: 27/05/2010, 12h26
  2. [Infobulle]sur les item d'une liste déroulante
    Par mamiberkof dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 24/05/2007, 11h31
  3. Réponses: 1
    Dernier message: 20/12/2006, 16h16
  4. [JS] supprimer un item d'une liste déroulante
    Par Commodore dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/06/2006, 14h55
  5. Se positionner sur un item d'une liste déroulante
    Par pyxosledisciple dans le forum IHM
    Réponses: 1
    Dernier message: 08/02/2006, 20h19

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