我尝试将某些项目添加到JComboBox
,但收到NullPointerException
错误。
这是我的代码的示例:
public adminPanel() {
fillComboTeacher();
initComponents();
}
public void fillComboTeacher(){
HashSet<Person> set = cont1.returnTeachers();
Iterator it = set.iterator();
try {
while (it.hasNext()) {
Person p = (Person) it.next();
String name = p.getName();
comboTeacher.addItem(name);
}
} catch (Exception e) {
System.out.println(e);
}
}
人员类别-名称,州(带有getter和setter)
returnTeachers()-返回一个包含状态为“ Teacher”的人员的
HashSet
我不明白为什么会收到此错误,为什么我不能填写
ComboBox
,所以我逐步按照教程进行操作,但仍然感觉不太好。谢谢!
最佳答案
您在呼叫fillComboTeacher
之前先呼叫initComponents
。
查看方法的名称,我假设您在后者中初始化了comboTeacher
。
因此,在那一点(comboTeacher.addItem(name);
)上,comboTeacher
尚未初始化,因此NullPointerException
也没有初始化。
要解决此问题,只需在构造函数中交换两个方法调用以初始化组件,然后再尝试使用它们。
几点注意事项:NullPointerException
通常很容易修复。只需查看stacktrace(它指示NPE所在的行),然后看看什么可以为null以及为什么在此行。
不要使用原始的迭代器,而要使用通用的迭代器(Iterator<Person> it = set.iterator();
),这样可以避免转换由next()
调用返回的对象。
由于您只读取集合中的元素,因此可以简单地使用for-each循环for(Person p : cont1.returnTeachers()) comboTeacher.addItem(p.getName());