Question

J'essaie de déclencher un événement chaque fois qu'un choix est fait à partir d'un JComboBox.

Le problème que j'ai c'est qu'il n'y a rien d'évident addSelectionListener() méthode.

J'ai essayé d'utiliser actionPerformed(), mais il ne se déclenche jamais.

À moins de remplacer le modèle pour le JComboBox, je suis à court d'idées.

Comment puis-je être informé d'un changement de sélection sur un JComboBox?**

Modifier: Je dois m'excuser.Il s'avère que j'utilisais une sous-classe de JComboBox, mais je vais laisser la question en suspens puisque votre réponse est bonne.

Était-ce utile?

La solution

Il faudrait répondre à Écouteurs d'action, comme ça:

combo.addActionListener (new ActionListener () {
    public void actionPerformed(ActionEvent e) {
        doSomething();
    }
});

@John Calsbeek souligne à juste titre que addItemListener() fonctionnera aussi.Vous pouvez en obtenir 2 ItemEvents, cependant, un pour la désélection de l'élément précédemment sélectionné et un autre pour la sélection du nouvel élément.N'utilisez simplement pas les deux types d'événements !

Autres conseils

Exemple de code de ItemListener mise en œuvre

class ItemChangeListener implements ItemListener{
    @Override
    public void itemStateChanged(ItemEvent event) {
       if (event.getStateChange() == ItemEvent.SELECTED) {
          Object item = event.getItem();
          // do something with object
       }
    }       
}

Maintenant, nous n'obtiendrons que l'élément sélectionné.

Ensuite, ajoutez simplement un écouteur à votre JComboBox

addItemListener(new ItemChangeListener());

j'essaierais le itemStateChanged() méthode du ItemListener interface si la solution de Jodonnell échoue.

Voici la création d'une ComboBox en ajoutant un écouteur pour le changement de sélection d'élément :

    JComboBox comboBox = new JComboBox();

    comboBox.setBounds(84, 45, 150, 20);
    contentPane.add(comboBox);

    JComboBox comboBox_1 = new JComboBox();
    comboBox_1.setBounds(84, 97, 150, 20);
    contentPane.add(comboBox_1);
    comboBox.addItemListener(new ItemListener() {
        public void itemStateChanged(ItemEvent arg0) {
            //Do Something
        }
    });
}

Vous pouvez essayer ceux-ci

 int selectedIndex = myComboBox.getSelectedIndex();

-ou-

Object selectedObject = myComboBox.getSelectedItem();

-ou-

String selectedValue = myComboBox.getSelectedValue().toString();

Je cherchais récemment cette même solution et j'ai réussi à en trouver une simple sans attribuer de variables spécifiques pour le dernier élément sélectionné et le nouvel élément sélectionné.Et cette question, bien que très utile, n’a pas apporté la solution dont j’avais besoin.Cela a résolu mon problème, j'espère que cela résoudra le vôtre et celui des autres.Merci.

Comment puis-je obtenir l'article précédent ou le dernier ?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top