2013-07-10 2 views
2

J'essaie d'écouter un changement de sélection dans un Java JComboBox. Je l'ai essayé d'utiliser un ActionListener mais le problème est le suivant: l'auditeur d'action fait quelque chose comme çaJava JComboBox écouter un événement de sélection de changement

public void actionPerformed(ActionEvent e){ 
    JComboBox<String> source = ((JComboBox<String>)e.getSource()); 
    String selected = source.getItemAt(source.getSelectedIndex()); 

    /*now I compare if the selected string is equal to some others 
     and in a couple of cases I have to add elements to the combo*/ 
} 

Comme vous pouvez le remarquer, quand je dois ajouter des éléments au combo autre événement est déclenché et la méthode actionPerformed est appelé à nouveau, même si je ne veux pas que, et le code peut boucles ... :( Est-il possible d'écouter le changement de sélection seulement et non à un événement de changement générique? Merci

+0

http://stackoverflow.com/questions/58939/jcombobox-selection-change-listener –

Répondre

8

Vous pouvez essayer itemStateChanged() méthode de l'interface ItemListener:

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

Et ajoutez l'auditeur à votre JComboBox:

source.addItemListener(new ItemChangeListener()); 
Questions connexes