java - Swing:JComboBox 删除/添加重复项

标签 java swing jcombobox

我的问题必须能够向组合框添加和删除项目。这些项目可以是重复的。 我设法添加它们:

jComboBox1.addItem(dodatek);

首先删除:

 if (jComboBox1.getItemCount() > 0) {
                jComboBox1.removeItemAt(0);

或选择一个:

    if (jComboBox1.getSelectedItem() != null) {
        jComboBox1.removeItemAt(jComboBox1.getSelectedIndex());

删除所有项目且其中一项重复时会出现问题。 在这种情况下,即使列表为空,组合框中的最后一项仍保持选中状态! /image/rgYP4.jpg

尝试删除所选项目时也会引发异常:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: Array index out of range: -1
    at java.util.Vector.removeElementAt(Vector.java:562)
    at javax.swing.DefaultComboBoxModel.removeElementAt(DefaultComboBoxModel.java:152)
    at javax.swing.JComboBox.removeItemAt(JComboBox.java:759)

只有在删除重复项时才会发生这种情况

最佳答案

选定的项目和选定的索引显然不是同一件事。在调用删除之前,您需要检查所选索引是否为 != -1。

选定的项目是在框中选定的值,选定的索引是在列表中选定的索引。

关于java - Swing:JComboBox 删除/添加重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29317037/

相关文章:

java - 立即更新到 Java 中的 JCombobox

java - 使用 Java FX 在服务器端生成图像

java - 旧曲结束后如何自动开始新曲

java - 可以将 Spring MVC 响应 DTO 声明为静态嵌套类吗?

java - 组件上的小窗口

java - 迭代地添加带有 gridbaglayout 的组件?

java - 如何检查 'only one jRadiobutton should be selected'的条件

java - 为什么 Java Character.toUpperCase/toLowerCase 没有像 String.toUpperCase/toLowerCase 这样的 Locale 参数

java - 从 JComboBox 获取值时出错

java - 从具有日期条件的数据库中选择值