在Java中删除组合框中的所有项
我需要删除组合框中的所有项目在Java中删除组合框中的所有项,java,swing,jcombobox,Java,Swing,Jcombobox,我需要删除组合框中的所有项目 int itemCount = combo.getItemCount(); for(int i = 0; i < itemCount; i++){ combo.removeItemAt(0); } int itemCount=combo.getItemCount(); 对于(int i=0;i
int itemCount = combo.getItemCount();
for(int i = 0; i < itemCount; i++){
combo.removeItemAt(0);
}
int itemCount=combo.getItemCount();
对于(int i=0;i
此代码将删除除最后一项之外的所有项。它给出了一个NullPointerException
。
如何解决这个问题?问题中的代码正常工作。但是,这看起来像是线程问题。另一个线程可能正在处理这些项目 但是,我建议您最好使用
removeAllItems()代码>方法:
combo.removeAllItems();
怎么样?使用.removeAllItems()方法从组合框中删除所有项目。假设它与另一个线程相关并不总是正确的。它可能是导致问题的线程本身
发生此异常的原因可能是在删除组合项时触发事件,并且在此事件处理方法中,您仍然引用组合框项
例如,当您在代码中的某个位置(actionPeformed()中除外)删除combo.removeItemAt(0)或removeAllItems()组合框中的最后一项时,actionPerformed事件仍将被触发/执行。但actionPerformed()方法通常包含对用户操作作出反应的代码(用户在组合框的某个位置单击)。因此,当最后一个项目被删除时,组合框中不再有其他项目,actionPerformed()中对项目或索引的任何引用都将导致异常
解决方案是将代码从actionPerformed()移动到例如mouseClicked()或其他事件处理程序,具体取决于您要执行的操作。removeAllItems()它确实会删除所有内容,但在将数据添加到组合框后,它不会显示在那里,nullPointException将显示使用此选项删除组合框中的所有元素:
第二行:
combo.removietemat(0)
我认为应该是I
而不是0
按以下相反顺序操作:
for(int i=combo.getItemCount()-1;i>=0;i--){
combo.removeItemAt(i);
}
但是在我的例子中,combo.removeAllItems()
工作正常通常发生这种情况是因为您有一个与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 ();
}
}
jComboBoxExample.addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件e){
你跑吗;
}
});
公共空间不运行(){
int n=jcomboxperfildocumentos.getItemCount();0{
字符串x=jcomboxperfildocumentos.getSelectedItem().ToString();
}
}
您可以使用
this.combo.removeAllItems()强>
删除JComboBox中的所有项。虽然我同意使用内置方法来执行此操作的答案,但当我自己运行此代码时,它工作正常。你确定你的问题不在其他地方吗?是的,我使用了removeAllItems()方法。它删除了所有项目。但是仍然会出现例外。您可能有线程问题。是否有其他线程访问组合框(并编辑它)?ResultSet result1=null//在添加combo.removeAllItems()之前删除现有项;result1=DBOptions.executeSQLQuery(查询);请尝试{while(result1.next()){String data=result1.getString(1);combo.addItem(data);}@chathura2020将代码添加到您的问题中,而不是添加到注释中…+1,因为这是更好的解决方案。虽然它没有解释OP获得NullPointerException
…;)的原因,但问题中的代码正常工作。但是,它看起来像是线程问题。另一个线程可能会搞乱这些项目。不要向我解释,请解释将其添加到OP(即,将其包含在您的答案中^^)。
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 ();
}
}