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

nieselfriem

Bekanntes Mitglied
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.

Java:
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
 
Wieso registrierst du den Listener nicht erst nach dem du setSelected... aufgerufen hast? Das sollte schon ausreichen oder? ???:L
 
Habe den ActionListener nun wie folgt initialisiert:
Java:
//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
 
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
 
So einfach kann Java sein 😉
Java:
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
 

Zurück
Oben