JComboBox Selection Change Listener?
-
09-06-2019 - |
Frage
Ich versuche, ein Ereignis zu bekommen zu schießen, wenn eine Auswahl aus einem JComboBox
hergestellt wird.
Das Problem, das ich habe ist, dass es keine offensichtliche addSelectionListener()
Methode ist.
Ich habe versucht, actionPerformed()
zu verwenden, aber es wird nie ausgelöst.
Kurz das Modell für die JComboBox
überschreiben, ich bin aus Ideen.
Wie kann ich auf einem JComboBox
eine Auswahl Änderung informiert werden? **
Edit: Ich habe zu entschuldigen. Es stellt sich heraus, dass ich eine abgestürzten Unterklasse von JComboBox
, aber ich werde die Frage überlassen, da Ihre Antwort ist gut.
Lösung
Es sollte antworten ActionListeners , wie folgt aus:
combo.addActionListener (new ActionListener () {
public void actionPerformed(ActionEvent e) {
doSomething();
}
});
@John Calsbeek weist zu Recht darauf hin, dass addItemListener()
funktionieren auch. Sie können 2 ItemEvents
erhalten, obwohl, eine für die Abwahl des zuvor ausgewählten Elements, und eine andere für die Auswahl des neuen Elements. Nur nicht beiden Ereignistypen verwenden!
Andere Tipps
Codebeispiel von ItemListener
Implementierung
class ItemChangeListener implements ItemListener{
@Override
public void itemStateChanged(ItemEvent event) {
if (event.getStateChange() == ItemEvent.SELECTED) {
Object item = event.getItem();
// do something with object
}
}
}
Jetzt werden wir nur ausgewähltes Element erhalten.
Dann fügen Sie einfach Zuhörer auf Ihre JComboBox
addItemListener(new ItemChangeListener());
Ich würde versuchen, die itemStateChanged()
Methode des ItemListener
Schnittstelle wenn jodonnell Lösung ausfällt.
Hier ist die Schaffung eines ComboBox einen Listener für Artikelauswahl ändern und fügte hinzu:
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
}
});
}
Sie können versuchen, diese
int selectedIndex = myComboBox.getSelectedIndex();
-oder -
Object selectedObject = myComboBox.getSelectedItem();
-oder -
String selectedValue = myComboBox.getSelectedValue().toString();
Ich war vor kurzem der Suche nach eben dieser Lösung und schaffte es, einen einfachen, einen zu finden, ohne bestimmte Variablen für das zuletzt gewählte Element zuweisen und das neue gewählten Element. Und diese Frage, wenn auch sehr hilfreich, bieten nicht die Lösung, die ich brauchte. Das ist mein Problem gelöst, ich hoffe, es löst Ihre und andere. Danke.