Проверяется, существует ли элемент в JComboBox? - PullRequest
19 голосов
/ 17 января 2012

Есть ли простой способ проверить, существует ли элемент в 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);
 }

Спасибо!

Ответы [ 3 ]

29 голосов
/ 17 января 2012

Используйте 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);
}

(Обратите внимание, что изнутри indexOf делает цикл по списку предметов, чтобы найти искомый предмет.)

5 голосов
/ 02 февраля 2015

Проверьте это:

if(((DefaultComboBoxModel)box.getModel()).getIndexOf(toAdd) == -1) {
  box.addItem(toAdd );
}

или

if(((DefaultComboBoxModel)box.getModel()).getIndexOf(toAdd) < 0) {
  box.addItem(toAdd );
}
0 голосов
/ 14 июля 2013

Обновление:

myComboBox.setSelectedIndex(-1);
String strItem="exists";   
myComboBox.setSelectedItem(strItem);   
if(myComboBox.getSelectedIndex()>-1){ 
    //exists  
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...