Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查JComboBox中是否已存在项?_Java_Jcombobox - Fatal编程技术网

Java 检查JComboBox中是否已存在项?

Java 检查JComboBox中是否已存在项?,java,jcombobox,Java,Jcombobox,除了迭代JComboBox外,还有没有一种简单的方法可以检查JComboBox中是否已经存在项?以下是我想做的: Item item = ...; boolean exists = false; for (int index = 0; index < myComboBox.getItemCount() && !exists; index++) { if (item.equals(myComboBox.getItemAt(index)) { exists

除了迭代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);
 }
Item=。。。;
布尔存在=假;
对于(int index=0;index
谢谢!

使用and调用检查项目是否已存在。如果项目不存在,此方法将返回
-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
会在项目列表上循环查找您要查找的项目。)

更新:

myComboBox.setSelectedIndex(-1);
String strItem="exists";   
myComboBox.setSelectedItem(strItem);   
if(myComboBox.getSelectedIndex()>-1){ 
    //exists  
}
请检查以下内容:

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

if(((DefaultComboBoxModel)box.getModel()).getIndexOf(toAdd)<0){
框。附加项(toAdd);
}

+1,但我很惊讶API中没有注意到
-1
返回值。您还可以创建一个DefaultComboxModel子类,该子类重写addElement方法,并在调用addElement的超类版本之前使用getIndexOf方法检查重复。这样您就不必调用重复数据消除手动,组合框将为添加到其中的每个项目自动完成所有工作。@mre如果查看源代码
DefaultComboBoxModel
,您会看到
int-getIndexOf(Object-anObject)
返回
objects.indexOf(anObject)
objects
Vector
,“如果
anObject
不在列表中,并且组合框不可编辑,它将不会更改当前选择。”即,此解决方案不起作用。但是,如果您将所选索引设置为-1,然后执行此操作,则它将起作用。@captainroxors我更新了代码,我没有测试我对您的信任哈哈。
if(((DefaultComboBoxModel)box.getModel()).getIndexOf(toAdd) < 0) {
  box.addItem(toAdd );
}