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.

War es hilfreich?

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.

Wie erhalte ich den vorherigen oder letzten Punkt?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top