繁体   English   中英

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

[英]Removing all Items from a combo box in Java

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

int itemCount = combo.getItemCount();

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

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

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

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

combo.removeAllItems();

您可以使用

this.combo.removeAllItems();

删除 JComboBox 中的所有项目。

在第二行:

combo.removeItemAt(0) ;

我认为应该是i而不是0

以相反的顺序执行:

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

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

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

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

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

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

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

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

使用它从组合框中删除所有元素:

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 ();
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM