使用JComboBox Open删除所有组合框项目的异常

时间:2013-06-02 00:42:12

标签: java swing jcombobox removeall

我需要删除JComboBox上的所有元素,使用.removeAllItems()它工作正常! 但我注意到有一个小问题,也许是一个错误?我不知道。

如果我打开JComboBox,然后尝试删除所有项目,则抛出异常:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0 >= 0

我尝试在调用removeAllItems之前关闭弹出窗口,如下所示:

private void removeAllClassesAvailable() {
        classeComboBox.hidePopup();
        classeComboBox.removeAllItems();
}

但仍然没有成功!

也许是因为我的JComboBox在JTable中?

2 个答案:

答案 0 :(得分:2)

看起来添加到组合框的其中一个侦听器尝试处理选择。尝试在删除项目之前从组合中删除侦听器,并在之后读取。

答案 1 :(得分:0)

尝试放置一个全局变量boolean,以避免控件继续触发新事件:

public static boolean avoidNewEvents;

.............

private void 
    jCBoxSubCategoriaActionPerformed(java.awt.event.ActionEvent evt) {                                                  
    // ComboBox 
    //
    if (Form.avoidNewEvents==false) return;
    .............

      //Avoid new events to fire recursively
      FORM.avoidNewEvents=false;

       /  
       jCBoxSubCategoria.removeAllItems();

     //Reset:
     FORM.avoidNewEvents=true;