检查一个项目是否已经存在于JComboBox中?

2022-09-02 09:09:11

除了迭代后者之外,有没有一种简单的方法来检查一个项目是否已经存在于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);
}

(请注意,在后台,确实会循环访问项目列表以查找您要查找的项目。indexOf


答案 2

请确认这一点:

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

if(((DefaultComboBoxModel)box.getModel()).getIndexOf(toAdd) < 0) {
  box.addItem(toAdd );
}

推荐