添加项目时出现JComboBox错误

时间:2014-05-17 13:16:06

标签: java swing nullpointerexception jframe jcombobox

我尝试向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,我一步一步地按照教程进行操作仍然不太好。 谢谢!

1 个答案:

答案 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());