我有使用附帶的偵聽器模型來捕捉所選項目的組合框:爪哇 - 清爽的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