我有使用附带的侦听器模型来捕捉所选项目的组合框:爪哇 - 清爽的JComboBox抛出异常
deleteCombo = new JComboBox<Course>(course.toArray(new Course[course.size()]));
model = new DefaultComboBoxModel<Course>(course.toArray(new Course[course.size()]));
deleteCombo.setModel(model);
deleteCombo.setRenderer(renderer);
deleteCombo.setSelectedIndex(0);
deleteCombo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
JComboBox deleteCombo = (JComboBox)e.getSource();
Course course = (Course)deleteCombo.getSelectedItem();
deleteNumTxt.setText(course.getCourseNum()); //This is line 391
deleteTitleTxt.setText(course.getCourseTitle());
deleteDurationTxt.setText(String.valueOf(course.getDuration()));
deleteFeeTxt.setText("$" + String.valueOf(course.getCourseFee()));
deleteLevelTxt.setText(course.getCourseLevel());
}
});
我使用itemSelected事件来填充文本框在GUI中显示详细信息选择的课程。当选择课程,删除课程按钮被点击它进入这个方法:
public static void deleteCourseRecord() {
courseNumIn = deleteNumTxt.getText();
int index = course.indexOf(new Course(courseNumIn));
course.remove(index);
//RE-POPULATE EDIT AND DELETE COMBOBOXES
model.removeAllElements();
for(Course item : course) {
model.addElement(item);
}
}
记录被删除,但它引发此异常:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at MyCourse$2.actionPerformed(MyCourse.java:391)
at javax.swing.JComboBox.fireActionEvent(JComboBox.java:1260)
at javax.swing.JComboBox.contentsChanged(JComboBox.java:1331)
at javax.swing.JComboBox.intervalRemoved(JComboBox.java:1351)
at javax.swing.AbstractListModel.fireIntervalRemoved(AbstractListModel.java:179)
at javax.swing.DefaultComboBoxModel.removeAllElements(DefaultComboBoxModel.java:175)
at MyCourse$Course.deleteCourseRecord(MyCourse.java:1138)
at MyCourse.actionPerformed(MyCourse.java:883)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
tjavax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
,我认为是有问题的我已经建立了actionPerformed部分,但我不知道它是什么。如果我不用模型(或任何其他方法)刷新组合框,它不会抛出异常。如果我注释掉第391行(在代码中标记),它将抛出第392行的异常,依此类推。如果填充文本字段的所有代码行都被注释掉,它不会引发异常,但是当然,该函数会丢失。关于我在做什么的任何想法都是错误的?干杯
哪一行是行391 – 75inchpianist
deleteNumTxt.setText(course.getCourseNum()); //这是391行 – Spud
然后deleteNumTxt或当然没有实例化。 deleteNumTxt在哪里设置?从你发布的代码看起来它是空的 – 75inchpianist