java - 验证 "Copy All"按钮中从组合框到列表的数据

标签 java swing

我正在尝试验证“复制全部”按钮,该按钮只能从组合框中复制列表中尚未存在的数据。

这是我的代码:

 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/

相关文章:

java - 将多张照片发布到 Facebook 时间轴

java - 字符串参数通常在网络服务中自动转义吗?

java - 对 Swing 组件进行单元测试

java - 如何通过鼠标事件改变JLabel的背景颜色?

java - JButtons、ActionListener 和 JOptionPane

java - Dropwizard 应用程序中出现断管异常

java - 使用 @AndroidFindBy 为具有多个 appPackage 的 android 运行 appium 测试

java - 将 UTC 日期从科学计数法转换为 Java.util.Date

Java Swing Timer 只运行一次

java - 如何设置组件的DataFlavor?