My code is quite simple actually. I saw a simple and similar code was from [this article](http://www.exampledepot.com/egs/javax.swing/combobox_CbAddItems.html).

At first, **I have 1 combobox**. I have a listener on it called **itemStateChanged()**. My purpose to add into this listener is that; "**to execute some code when user click (select) an item from its dropbox**".

```
Cmb_ItemCategory = new javax.swing.JComboBox();

Cmb_ItemCategory.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Loading..." }));

Cmb_ItemCategory.addItemListener(new java.awt.event.ItemListener() {
    public void itemStateChanged(java.awt.event.ItemEvent evt) {
        Cmb_ItemCategoryItemStateChanged(evt);
    }
});

private void Cmb_ItemCategoryItemStateChanged(java.awt.event.ItemEvent evt) {

        if(evt.getStateChange() == java.awt.event.ItemEvent.SELECTED){
        System.err.println("Sombody click or change my model content");
        }

    }

```

Behind the code, I grab some data, and then calling a method of removeAllItems() .
And then I set a new Model (from new data) into it.

```
-- at another line of code ---
Cmb_ItemCategory.removeAllItems();
Cmb_ItemCategory.setModel(newModel);

```

I juz realized that my **itemStateChanged() is called** when i do **the removeAllItem()** method. called once. 

So, How to make it only called once user Click (select) only AND not when removeAllItems() called? 

it similar to [this article.](https://stackoverflow.com/questions/330590/why-is-itemstatechanged-on-jcombobox-is-called-twice-when-changed) But it's not removingItems case. CMIIW.