jComboBox Actionlistener wird beim erstmaligen Befüllen getriggert

learningbydoing

Aktives Mitglied
Hallo zusammen,

ich habe gerade das Problem, dass mein ActionListener (von der jComboBox) jedes mal beim Programmstart getriggert wird. Die jComboBox wird immer am Anfang dynamisch befüllt und das löst den Trigger aus.

Wie kann ich das umgehen?

Vielen Dank schon einmal im Voraus!
 
Du könntest es erst füllen und dann den ActionListener setzen.
Oder du führst eine Variable ein, mit der Du das abschalten kannst, sprich: Der im aufgerufenen ActionListener wird erst geschaut, wie die Variable gesetzt ist.
 
Hm, ok. Wie mache ich das, wenn es zwei verschiedene Methoden sind. Das befüllen passiert in einer anderen Klasse, wo sie über einen Klassenaufruf gemacht wird?

Hoffe das ist verständlich, wie ich das meine😅
 
Zwei Methoden sind egal, so diese zu einer Klasse / Instanz gehören. Aber "andere Klasse" ist schlicht fatal und zeugt von einer schlechten Strukturierung. Du solltest Dinge sauber kapseln. Direkter Zugriff auf den State einer Klasse sollte keine andere Klasse haben.

Also Wenn du eine Klasse hast, die diese JComboBox enthält, dann darf keine andere Klasse auf diese JComboBox zugreifen. Wenn da etwas dran geändert werden soll, dann läuft das über eine Methode der Klasse und die hat dann natürlich die volle Kontrolle. Und wenn eine andere Klasse Events braucht (z.B. vom ActionListener dieses Controls), dann hat die andere Klasse dies bei einer Methode der Klasse mit der JComboBox zu sagen und nicht direkt an der JComboBox. Und damit hast Du in der Klasse mit der JComboBox die volle Kontrolle und kannst alles steuern.
 
Hast du auch schon daran gedach, einen ItemListener zu verwenden anstatt eines ActionListeners?
Der würde dann auch reagieren, wenn du das Item per Code setzt anstatt per Maus oder Tastatur.
 
Hast du auch schon daran gedach, einen ItemListener zu verwenden anstatt eines ActionListeners?
Der würde dann auch reagieren, wenn du das Item per Code setzt anstatt per Maus oder Tastatur.
Das wäre natürlich auch eine Lösung gewesen, aber da bei mir die ganze Strukturierung nicht gestimmt hat, war die andere Option für mich besser gewesen. Trotzdem vielen Dank!🙂
 
Das war unabhängig gemeint. Alles, was oben genannt wurde, ist absolut korrekt. Nur als Listener für Auswahlfelder (Checkboxe, Togglebutton, Radiobutton, Liste, Combobox) nimmt man normalerweise einen ItemListener oder ChangeListener, je nachdem. Actionlistener sind für die tatsächliche Usereingabe gedacht.
 

Zurück
Oben