我正在尝试验证“复制全部”按钮,该按钮只能从组合框中复制列表中尚未存在的数据。
这是我的代码:
String ele;
//if the List has 0 data, then it copies everything from the ComboBox
if(model.getSize()== 0){
for (int i = 0; i < cbxNum2.getItemCount(); i++) {
ele = cbxNum2.getItemAt(i).toString();
model.addElement(ele);
}
//Trying to validate if the data is already on the List, so I can skip it.
}else{
for (int i = 0; i < cbxNum2.getItemCount(); i++) {
ele = cbxNum2.getItemAt(i).toString();
for (int j = 0; j < model.getSize(); j++) {
if(!model.getElementAt(i).equals(ele)){
model.addElement(ele);
}
}
}
}
当列表有 0 个项目时它运行良好,但是当我将新项目添加到组合框并尝试将其复制到列表中时,我收到此错误:
"AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 2 >= 2
最佳答案
model.getElementAt(i)
应为 model.getElementAt(j)
,但请注意,在当前代码下,对于每个不等于 ele
您将把 ele
添加到 model
中,这将在每次迭代中增加模型的大小
更好的解决方案是检查 ele
是否在 model
中,并且只有在找不到匹配项时才添加它,也许类似...
for (int i = 0; i < cbxNum2.getItemCount(); i++) {
boolean found = false;
ele = cbxNum2.getItemAt(i).toString();
for (int j = 0; j < model.getSize(); j++) {
if (model.getElementAt(j).equals(ele)) {
found = true;
break
}
}
if (!found) {
model.addElement(ele);
}
}
关于java - 验证 "Copy All"按钮中从组合框到列表的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33248269/