我尝试向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);
}
}
人物类 - 名称,州(带有吸气剂和制定者)
returnTeachers() - 返回一个HashSet
个包含状态=&#34的人员;教师&#34;
我不明白为什么我会收到此错误以及为什么我无法填写ComboBox
,我一步一步地按照教程进行操作仍然不太好。
谢谢!
答案 0 :(得分:2)
在致电fillComboTeacher
之前,您正在呼叫initComponents
。
查看方法的名称,我假设您在后者中初始化了comboTeacher
。
因此,此时(comboTeacher.addItem(name);
),comboTeacher
尚未初始化,因此NullPointerException
。
要解决此问题,只需在构造函数中交换两个方法调用以初始化组件,然后再尝试使用它们。
很少注意到:
NullPointerException
通常很容易修复。只需看看堆栈跟踪(它表示NPE出现的行),看看什么可以为null,为什么在这一行。
不要使用原始迭代器,而是使用通用迭代器(Iterator<Person> it = set.iterator();
),这样可以避免强制转换next()
调用返回的对象。
由于您只是阅读集合中的元素,因此您只需使用for-each循环for(Person p : cont1.returnTeachers()) comboTeacher.addItem(p.getName());