# ComboBox - ItemListener



## .robert (23. Mai 2006)

hi,
ich will auf die anderungen in einer ComboBox hören,
allergind nur auf die, die der Nutzer verurscht, also, wenn ein anderes Item ausgewählt wird.
Wieu mache ich das?

ich habe es mit

```
myJPanel.jComboBox1.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent evt) {
                if (evt.getStateChange()==ItemEvent.SELECTED ){
                    //do something
                }
                
            }
        });
```
versucht, so readiert er aber auch auf andere ereignisse,
zum beispiel addItem() etc.

weiß jemand rat?

besten dank,
robert


----------



## thE_29 (23. Mai 2006)

hehe 

das problem hatte ich auch!

Einfach eine boolsche Variable anlegen

boolean adding = false;

beim listener auf !adding abfragen!

Und vor jedem addItem musst du halt sagen, adding = true und nachher adding = false;

Er geht zwar noch immer in den Listener rein, aber durch die boolsche Variable tut er nix!


----------



## lhein (23. Mai 2006)

Er könnte auch der Einfachheit halber (sofern das in seinem Fall Sinn macht) den Listener erst dann zufügen, wenn die Combobox bereits befüllt ist.

lr


----------



## .robert (23. Mai 2006)

LR hat gesagt.:
			
		

> Er könnte auch der Einfachheit halber (sofern das in seinem Fall Sinn macht) den Listener erst dann zufügen, wenn die Combobox bereits befüllt ist.
> 
> lr



hehe, so habe ich es auch, allerding bringt das nix,
weil ich waerend des programmlaufs auch hin und wieder die items der box veraendere,
und genau dann tritt ja auch mein problem auf...

wenn das aktuelle item verändere wird, sprich, der nutzer wählt ein anderes, werden aktionen auf einem array ausgeführt, die sich auf den itemindex beziehen.
wenn ich jetzt zb. removeallitems() mache, treten logischerweise fehler auf, wenn die die aktionen auf dem array trozdem ausgeführt werden..

ich werde es mal mit der boolschen variablen versuchen,
besten dank!


----------

