void () { final List<Pair<String, Icon>> data = myDataFactory.create(); final JComboBox<Pair<String, Icon>> comboBox = getComponent(); comboBox.removeItemListener(myCommitListener); try { if (!dataChanged(data)) { super.doReset(); return; } final String oldValue = getValue(); myIcons.clear(); comboBox.removeAllItems(); if (myNullable) { comboBox.addItem(EMPTY); } for (final Pair<String, Icon> s : data) { comboBox.addItem(new ComboBoxItem(s)); myIcons.put(s.first, s.second); } setValue(oldValue); super.doReset(); } finally { comboBox.addItemListener(myCommitListener); } }