我需要从组合框中删除所有项目
int itemCount = combo.getItemCount();
for(int i = 0; i < itemCount; i++){
combo.removeItemAt(0);
}
此代码将删除除最后一项之外的所有项目。它给出了一个NullPointerException
. 如何解决?
问题中的代码通常可以工作。但是,它看起来像一个线程问题。另一个线程可能正在弄乱这些项目。
但是,我建议您最好使用以下removeAllItems();
方法:
combo.removeAllItems();
您可以使用
this.combo.removeAllItems();
删除 JComboBox 中的所有项目。
In second line:
combo.removeItemAt(0)
;
I think instead of 0
it should be i
.
do it in reverse order as:
for(int i=combo.getItemCount()-1;i>=0;i--){
combo.removeItemAt(i);
}
But in my case combo.removeAllItems()
works fine
它与另一个线程相关的假设并不总是正确的。它可能是导致问题的线程本身。
可能会发生此异常,因为在删除组合项时触发了一个事件,并且在此事件处理方法中您仍然引用组合框项。
例如,当您在代码中的某个位置(除了在 actionPeformed() 中)使用 combo.removeItemAt(0) 或 removeAllItems() 从组合框中删除最后一项时,仍然会触发/执行事件 actionPerformed。但通常 actionPerformed() 方法包含对用户操作(用户单击组合框上的某处)做出反应的代码。因此,当最后一个项目被删除时,组合框中不再有项目,并且在 actionPerformed() 中对项目或索引的任何引用都会导致异常。
对此的解决方案是将代码从 actionPerformed() 移动到例如 mouseClicked() 或其他事件处理程序,具体取决于您想要执行的操作。
使用 .removeAllItems() 方法从组合框中删除所有项目。
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 ();
}
}