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 :

Récupérer la sélection d'une JComboBox


Sujet :

AWT/Swing Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Mai 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Canada

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Mai 2017
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Récupérer la sélection d'une JComboBox
    Bonjour a tous et a toutes,

    voici ma classe comboBox,j'aimerais savoir comment chercher la valeur de subcombox situé dans la méthode actionPerformed
    merci beaucoup pour le support!


    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    import javax.swing.*;
     
    public class ComboBox1 extends JPanel implements ActionListener
    {
        private String unit;
        private String subUnit;
        private JComboBox<String> mainComboBox;
        private JComboBox<String> subComboBox;
        private Hashtable<String, String[]> subItems = new Hashtable<String, String[]>();
     
     
         public  ComboBox1(String unit,String subUnit)
            {setUnit(unit);
             setSubUnit(subUnit);
            } 
    //accesseurs
        public void setUnit(String unit)
    	{this.unit=unit;} 
        public void getUnit(String unit)
    	{this.unit=unit;} 
        public void  setSubUnit(String subUnit)
    	{this.subUnit=subUnit;} 
        public void  getSubUnit(String subUnit)
    	{this.subUnit=subUnit;} 
     
     
     
        public ComboBox1()
        {
            String[] items = { "type d'unité", "volume", "masse", "distance" };
            mainComboBox = new JComboBox<String>( items );
            mainComboBox.addActionListener( this );
     
            //  prevent action events from being fired when the up/down arrow keys are used
            mainComboBox.putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE);
            add( mainComboBox );
     
            //  Create sub combo box with multiple models
     
            subComboBox = new JComboBox<String>();
            subComboBox.setPrototypeDisplayValue("XXXXXXXXXX"); 
            add( subComboBox );
     
            String[] subItems1 = {  "l", "dl", " cl","ml" };
            subItems.put(items[1], subItems1);
     
            String[] subItems2 = {  "g", "dg", "cg","mg" };
            subItems.put(items[2], subItems2);
     
            String[] subItems3 = { "m", "dm", "cm","mm" };
            subItems.put(items[3], subItems3);
            //JComboBox cb = new JComboBox(items);
             //Object obj = cb.getSelectedItem(); 
     
     
        }            
     
            public String getUn(){
              return unit;}
            public String getSubUn(){
            return subUnit;}
     
        public void actionPerformed(ActionEvent e)
        {
            unit = (String)mainComboBox.getSelectedItem();
     
     
            Object o = subItems.get( unit );
     
            if (o == null)
            {
                subComboBox.setModel( new DefaultComboBoxModel() );
     
            }
            else
            {
                subComboBox.setModel( new DefaultComboBoxModel( (String[])o ) );
     
     
        }
     
      }
    }

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Si tu veux récupérer la sélection dans subComboBox, c'est exactement comme pour mainComboBox.

    Si tu veux utiliser la même méthode actionPerformed, donc faire subComboBox.addActionListener(this); dans le constructeur de ComboBox1, il te suffit juste de distinguer la source de l’événement :

    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
    public void actionPerformed(ActionEvent e) {
     
       if ( e.getSource() == mainComboBox ) {
     
            unit = (String)mainComboBox.getSelectedItem();
     
            /*...*/
     
       }
       else if ( e.getSource() == subComboBox ) {
     
          String selectionSubComboBox = (String)subComboBox.getSelectedItem();
     
          /*...*/
     
       }
     
    }

    ou d'utiliser les commandes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public class Combo1 extends .... {
     
         public static final String MAIN_COMBO_COMMAND = "maincombo";
         public static final String SUB_COMBO_COMMAND = "subcombo";
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    mainComboBox = new JComboBox<String>( items );
    mainComboBox.setActionCommand(Combo1.MAIN_COMBO_COMMAND);   
    mainComboBox.addActionListener(this);
    /*...*/
     
    subComboBox = new JComboBox<String>();
    subComboBox.setActionCommand(Combo1.SUB_COMBO_COMMAND);
    subComboBox.addActionListener(this);
    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
    public void actionPerformed(ActionEvent e) {
     
       switch( e.getActionCommand() ) {
     
       case Combo1.MAIN_COMBO_COMMAND: {
     
            unit = (String)mainComboBox.getSelectedItem();
     
            /*...*/
            break;
       }
       case Combo1.SUB_COMBO_COMMAND: {
     
          String selectionSubComboBox = (String)subComboBox.getSelectedItem();
     
          /*...*/
           break;
       }
     
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Candidat au Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Mai 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Canada

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Mai 2017
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    merci beaucoup, maintenant je peux chercher la valeur du subComboBox, mais comment je peux utiliser la variable selectionSubComboBox dans une methode située dans une autre classe?

    je veux mettre cette valeur dans la variable subUnit situé ici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public String getSubUn(){
            return subUnit;}
    pour que je puisse appeler cette methode qui dois etre sans parametres.


    merci

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Si tu parles de la variable subUnit de ta classe Combo1, elle est tout à fait accessible depuis la méthode actionPerformed() de la classe Combo1, donc tu peux écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    subUnit = (String)subComboBox.getSelectedItem();

    Attention, toute fois, cette variable n'est affecté qu'en cas de sélection (que si la méthode actionPerformed est exécutée). Et c'est valable pour unit : comme tu initialises mainComboBox = new JComboBox<String>( items );, avant l'enregistrement de l'évenement, il faut penser à initialiser unit.

    Attention également aux setters qui permettent de modifier les variables unit et subUnit sans que les sélections dans les combo ne changent en conséquence : on peut donc avoir décorrélation entre les valeurs de ces variables et les sélections des combos.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Candidat au Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Mai 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Canada

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Mai 2017
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    effectivement le setter était la source du problème.
    Merci

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

Discussions similaires

  1. Aide urgent pour imprimer
    Par noussa_nouha dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 30/08/2006, 17h40

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