jComboBoxActionPerformed - zu oft getriggert

Tashtego

Grünschnabel
Ich hab ein Problem mit einer jComboBox.
Mir wird das ActionPerformed einfach zu oft aufgerufen. Ich will NUR bei Auswahl per Mausklick oder Pfeiltasten in der ComboBox durch den Benutzer etwas passieren lassen, NICHT beim addItem oder removeAllItems().
Kann man das machen? Bin ich im ActionPerformed falsch? Soweit ich das sehe passen aber die anderen nich?
 
Genau willst du das glaub ich gar nich wissen :) Ich versuchs mal in Kurzfassung:

Ich hab eine Adressmaske programmiert mit einem anzuzeigenden Datensatz (strasse, plz, ort....)

Oben am Anfang der Maske habe ich das Dropdown, mit dem man andere Adressen auswählen kann. Neben diesem Dropdown hab ich einen Neu-Button.

Das heißt mit Klicken auf den Neubutton wird ein weiterer Satz in dem Adressen-Array erzeugt und die Anzeigen Funktion aufgerufen. Beim Auswählen eines Satzes durch das Dropdown wird ebenfalls die Anzeigen Funktion aufgerufen.

Was macht die Anzeigen-Funktion? Sie liest den gewählten Datensatz, befüllt alle Felder (Strasse etc.). Sie baut aber auch das Dropdown neu auf! Und das ist offenbar eins der Probelme. Der Insert des Neubuttons sowie der RemoveAllItems und Neuaufbau der Combobox ruft immer soweit ich das sehe das ActionPerformed des Dropdowns auf. Dieses ActionPerformed bei dem ich natürlich davon ausgehe, daß es die Usereingabe ist, ruft wiederum die Anzeigen-Funktion auf. Eine Endlosschleife ist es nicht. Aber im Endeffekt passiert das falsche. Er scrollt beim Neu-Button nicht zum aktuell ausgewählten Item (was der Funktion Anzeigen mitgegeben wird) sondern läuft nochmal in die Funktion nach dem RemoveAllItems rein, denkt diesmal, es sind keine Items da, und wählt den ersten Satz aus.... Kapiert das wer? Ich nicht. :-(
 
also wenn ich mir das actionperformed evt anschau steht da nur "comboBoxChanged" als actionCommand. meinst du das oder muß ich im von netbeans erzeugten action listener selbst was ändern?
 
Ja ich mache die ganze Anwendung mit Netbeans. Einfache Swing-Anwendung. Und ich sehe als property actionCommand des jComboBox steht da der String comboBoxChanged drin. Und wenn ich mir den erzeugten Code anseh, sieht der wie folgt aus:

Code:
            jComboBoxAnschriften.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jComboBoxAnschriftenActionPerformed(evt);
            }
        });

muß ich das erweitern?
 
Besser spät als ...

Über
Code:
private void jCombobox(java.awt.event.ItemEvent evt) {                                                
        if (evt.getStateChange()==1)

kannst du abfragen, ob eine Itemauswahl verändert wurde. 1 steht hier für select. Ansonsten steht mehr dazu in der API.
 
Zurück