# JCombobox und Actionlistener Aktion nur ausführen, wenn Useraktion ihn auslöst



## nieselfriem (4. Dez 2011)

Hallo!

Ich habe eine jComboList die im Konstruktur mit Daten gefüllt wird und schon eine Art Vorauswahl darstellt. Sobald eine Änderung durch den Benutzer an der ComboBox durchgeführt wird, soll ein Speicherbutton aktviert werden.


```
jInArbeitComboBox.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent actionEvent) {
                updateCounter++;
               jQuickSaveBT.setEnabled(true);
                System.out.println("Updatecounter " + updateCounter);
            }
        });
```
Das Füllen der ComboBox im Kontrukor und der Vorauswahl wird offenbar schon im Actionlistener registriert, so dass schon vorher der Speicherbutton wird aktiv ist, ohne dass ich eine Aktion an der ComboBox durchgeführt habe. Wie kann ich unterscheiden, dass die Aktion an der ComboBox eine Useraktion war. Gibt Unterscheidungsmöglichkeiten?

Gruß niesel


----------



## eRaaaa (4. Dez 2011)

Wieso registrierst du den Listener nicht erst nach dem du setSelected... aufgerufen hast? Das sollte schon ausreichen oder? ???:L


----------



## nieselfriem (4. Dez 2011)

Habe den ActionListener nun wie folgt initialisiert:

```
//Daten aus dem Objekt abfragen und entsprechenden Index vorauswählen
switch (jobDet.getInArbeit()) {
                    case -1:
                        jInArbeitComboBox.setSelectedIndex(0);
                        break;
                    case 0:
                        jInArbeitComboBox.setSelectedIndex(1);
                        break;
                    case 2:
                        jInArbeitComboBox.setSelectedIndex(2);
                        break;
                    case 3:
                        jInArbeitComboBox.setSelectedIndex(3);
                        break;

                }

                jInArbeitComboBox.addActionListener(new ActionListener() {

                    public void actionPerformed(ActionEvent actionEvent) {
                        System.out.println("ActionListener der Combobox");
                        updateCounter++;
                        jQuickSaveBT.setEnabled(true);
                        System.out.println("Updatecounter " + updateCounter);
                    }
                });
```
Leider wird die Aktion trotzdem sofort ausgeführt.

Gruß niesel


----------



## Gast2 (5. Dez 2011)

Dafür würde ich ein ItemListener verwenden und den natrülich erst ganz am Schluß registrieren
Für so einem speziellen Fall schadet ein KSKB nicht


----------



## nieselfriem (5. Dez 2011)

So einfach kann Java sein 

```
jInArbeitComboBox.addItemListener(new ItemListener() {

   public void itemStateChanged(ItemEvent e) {
      jQuickSaveBT.setEnabled(true);
   }
});
```

Gruß an alle die sich hier eingerbacht haben und ein Dankeschön!

Gruß niesel


----------

