Swing:JComboBox删除/添加重复项

时间:2015-03-28 12:16:19

标签: java swing jcombobox

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

jComboBox1.addItem(dodatek);

先删除:

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

或选择一个:

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

删除所有项目时会出现问题,其中一项是重复的。 在这种情况下,即使列表为空,最后一项仍然在组合框中被选中! http://imgur.com/sMf2HWg

它还会在尝试删除所选项目时抛出异常:

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 个答案:

答案 0 :(得分:2)

选择项目和选定索引显然并不意味着相同的事情。如果所选索引是!= -1,则需要检查它是否在调用remove之前。

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