从Java中的combobox中删除所有项目

我需要从combobox中删除所有项目

int itemCount = combo.getItemCount(); for(int i=0;i<itemCount;i++){ combo.removeItemAt(0); } 

此代码将删除除最后一项之外的所有项目。 它给出了NullPointerException。 如何解决?

问题中的代码通常会起作用。 但是,它看起来像一个线程问题。 另一个线程可能是搞乱这些项目。

但是,我最好你应该更好地使用removeAllItems(); 方法:

 combo.removeAllItems(); 

JComboBox.removeAllItems()怎么样?

使用.removeAllItems()方法从combobox中删除所有项目。

在第二行:

combo.removeItemAt(0) ;

我想而不是0应该是i

以相反的顺序执行:

 for(int i=combo.getItemCount()-1;i>=0;i--){ combo.removeItemAt(i); } 

但在我的情况下combo.removeAllItems()工作正常

它与另一个线程相关的假设并不总是正确的。 它可能是导致问题的线程本身。

可能会发生此exception,因为在删除组合项时会触发事件,而在此事件处理方法中,您仍然会引用combobox项。

例如,当你在代码中的某个地方(除了在actionPeformed()中)删除combo.removeItem(0)或removeAllItems()的combobox中的最后一项时,仍然会触发/执行事件actionPerformed。 但是,actionPerformed()方法通常包含对用户操作做出反应的代码(用户在combobox上的某处单击)。 因此,当最后一个项目被删除时,combobox中没有更多项目,并且对actionPerformed()中的项目或索引的任何引用都将导致exception。

解决方案是将代码从actionPerformed()移动到例如mouseClicked()或其他事件处理程序,具体取决于您要执行的操作。

removeAllItems()它确实删除了所有东西,但是在将数据添加到combobox之后它将不会显示,nullPointException将显示

使用此选项可以从combobox中删除所有元素:

 DefaultComboBoxModel model = (DefaultComboBoxModel) ComboBox.getModel(); model.removeAllElements(); 

通常它会发生,因为您有一个与JComboBox相关的事件。 如果您在JComboBox中有控制项来执行操作,则会解决此问题,例如:

 jComboBoxExample.addActionListener (new ActionListener () { public void actionPerformed (ActionEvent e) { do_run (); } }); public void do_run() { int n=jComboBoxPerfilDocumentos.getItemCount(); <--THIS IS THE SOLUTION if (n> 0) { String x = jComboBoxPerfilDocumentos.getSelectedItem (). ToString (); } }