Проверка наличия элемента в JComboBox?
Есть ли простой способ проверить, существует ли элемент в JComboBox, кроме повторения последнего? Вот что я хочу сделать:
Item item = ...;
boolean exists = false;
for (int index = 0; index < myComboBox.getItemCount() && !exists; index++) {
if (item.equals(myComboBox.getItemAt(index)) {
exists = true;
}
}
if (!exists) {
myComboBox.addItem(item);
}
Спасибо!
Ответы
Ответ 1
Используйте DefaultComboBoxModel
и вызовите getIndexOf(item)
, чтобы проверить, существует ли элемент. Этот метод вернет -1
, если элемент не существует. Вот пример кода:
DefaultComboBoxModel model = new DefaultComboBoxModel(new String[] {"foo", "bar"});
JComboBox box = new JComboBox(model);
String toAdd = "baz";
//does it exist?
if(model.getIndexOf(toAdd) == -1 ) {
model.addElement(toAdd);
}
(Обратите внимание, что under-the-hood, indexOf
выполняет цикл над списком элементов, чтобы найти элемент, который вы ищете.)
Ответ 2
Обратите внимание:
if(((DefaultComboBoxModel)box.getModel()).getIndexOf(toAdd) == -1) {
box.addItem(toAdd );
}
или
if(((DefaultComboBoxModel)box.getModel()).getIndexOf(toAdd) < 0) {
box.addItem(toAdd );
}
Ответ 3
Update:
myComboBox.setSelectedIndex(-1);
String strItem="exists";
myComboBox.setSelectedItem(strItem);
if(myComboBox.getSelectedIndex()>-1){
//exists
}