Java 检查JComboBox中是否已存在项?
除了迭代JComboBox外,还有没有一种简单的方法可以检查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
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 );
}