[英]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.