从Java中的组合框中删除所有项目

问题描述 投票:5回答:9

我需要从组合框中删除所有项目

    int itemCount = combo.getItemCount();

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

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

java swing jcombobox
9个回答
26
投票

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

但是,我建议你最好使用removeAllItems();方法:

combo.removeAllItems();

3
投票

2
投票

在第二行:

combo.removeItemAt(0);

我认为它应该是0而不是i

以相反的顺序执行:

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

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


2
投票

您可以使用

this.combo.removeAllItems();

删除JComboBox中的所有项目。


1
投票

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


0
投票

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

可能会发生此异常,因为在删除组合项时会触发事件,并且在此事件处理方法中,您仍然会引用组合框项。

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

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


0
投票

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


0
投票

使用此选项可从组合框中删除所有元素:

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

0
投票

通常它会发生,因为您有一个与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 ();
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.