java - 如何遍历 JComboBox 并验证项目

标签 java eclipse jcombobox

我正在尝试遍历 JComboBox 项目,即它连接到数据库,每当我单击它时,它都会从数据库中获取数据并更新它。但是在这种情况下它会添加重复值。我试图通过遍历添加到 JComboBox 的每个项目来验证它,如果现有项目与我尝试添加的项目相似,则它不会添加并跳转到其他语句。

但是,为了避免第一次添加 counter -1 时出现此错误,我得到了 Null pointer 错误,但是一旦添加了项目并想要更新,它就会出错。

我的 JComboBox 代码如下:

comboBox.addMouseListener(
            new MouseAdapter() {
                @Override
                public void mouseClicked(MouseEvent ev) {
                    List<Guest> list = null;
                    list = database.readGuest();
                    int n = list.size();

                    if(n <= 0) {
                        JOptionPane.showMessageDialog(null, "No data found.");
                    }else {
                        for(int count = 0; count < n; count++) {
                            g = list.get(count);
                            String pass = g.getPassportNp();
                            //String s = (String) comboBox.getItemAt(count-1);
                            //for(int i = 0; i < n; ++i) {
                                if(comboBox.getItemCount() != 0) {
                                    if(comboBox.getItemAt(count-1).equals(pass)) {
                                        continue;
                                    }else {
                                        comboBox.addItem(pass);
                                    }
                                }else {
                                    comboBox.addItem(pass);
                                }
                            //}

                        }
                    }
                }
            });

有什么解决办法吗?

最佳答案

您没有遍历组合框中的项目,而只是与其中的最后一项进行比较。您的基本设计应该是 2 个嵌套的 for 循环,一个用于遍历数据库项,一个用于遍历组合框项以检查当前数据库项是否已经存在。 (您也可以使用 List.contains 而不是更清晰、更短的嵌套循环)。

旁注:在组合框上注册鼠标监听器似乎是此类工作的设计风格。从数据库中获取项目不是您想要在 EDT 上执行的操作,而是在后台线程中执行的操作。此外,您不知道首先会发生什么:打开/动画组合框(由 Swing 完成),或修改其内容?这让我们很难考虑控制流,这也是采用不同方法的另一个原因。

关于java - 如何遍历 JComboBox 并验证项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36738190/

相关文章:

java - 将二进制数据发布到 RESTEasy 服务时出现 NPE

java - 如何创建具有不可修改键的 Java Map<String,String> ?

java - 在 Eclipse 外部运行 Java Applet

java - 在 ActionListener 外部访问 JButton ActionListener 内部所做的更改

java - 如何防止多次点击 JComboBox

java - stringbuffer/stringbuilder 在内存中如何工作? stringbuilder.delete 函数如何工作?

java - 查找所有不是@Autowired 的类

java - Eclipse 中 Spring Boot 所需的服务器

java - 如何使用 jcheck 框和多选创建 jcombobox

java - 计算 n 个骰子总和的方法(不使用数组)