从事学校项目。我的程序有一个 jcombobox 的 Action 监听器,一旦我点击提交,就会清除该框并隐藏它。那就是它说空指针的时候,即使我在清除它后没有使用它或单击它。而且,它只在我第一次清除它时发生。
JComboBox sidComboBox = new JComboBox();
sidComboBox.setFont(new Font("Lantinghei TC", Font.PLAIN, 15));
sidComboBox.setBounds(139, 127, 222, 27);
contentPane.add(sidComboBox);
btnSubmit.addActionListener (new ActionListener () //adding action listener to the button component and creating a specific action performed method (override) for the button
{
public void actionPerformed (ActionEvent e)
{
if (btnSelect == 5)
{
sidComboBox.setEnabled(false);
sidComboBox.setVisible(false);
fnComboBox.setEnabled(false);
lnComboBox.setEnabled(false);
pnComboBox.setEnabled(false);
fnComboBox.setVisible(false);
lnComboBox.setVisible(false);
pnComboBox.setVisible(false);
}
btnAdd.setEnabled(true);
btnEdit.setEnabled(true);
btnDelete.setEnabled(true);
btnSearch.setEnabled(true);
btnViewAll.setEnabled(true);
TAFirstName.setVisible(false);
TALastName.setVisible(false);
TAStudentID.setVisible(false);
TAPhoneNumber.setVisible(false);
lblFirstName.setVisible(false);
lblLastName.setVisible(false);
lblPhoneNumber.setVisible(false);
lblStudentId.setVisible(false);
btnSubmit.setVisible(false);
btnSubmit.setEnabled(false);
btnEditor.setVisible(false);
btnEditor.setEnabled(false);
TAFirstName.setEditable(false);
TALastName.setEditable(false);
TAStudentID.setEditable(false);
TAPhoneNumber.setEditable(false);
TAFirstName.setText(null);
TALastName.setText(null);
TAStudentID.setText(null);
TAPhoneNumber.setText(null);
sidComboBox.setVisible(false);
sidComboBox.setEnabled(false);
sidComboBox.removeAllItems();
fnComboBox.setVisible(false);
fnComboBox.setEnabled(false);
fnComboBox.removeAllItems();
lnComboBox.setVisible(false);
lnComboBox.setEnabled(false);
lnComboBox.removeAllItems();
pnComboBox.setVisible(false);
pnComboBox.setEnabled(false);
pnComboBox.removeAllItems();
btnSelect = 0;
}
}
);
sidComboBox.addActionListener (new ActionListener () //adding action listener to the button component and creating a specific action performed method (override) for the button
{
public void actionPerformed (ActionEvent e)
{
int check = db.getNum() - 1;
if (check == -1) {
}
else {
int studentID = (int) sidComboBox.getSelectedItem();
int num = db.getNum();
for (int b1 = 0; b1 < num; b1++)
{
int nom = (db.studentList[b1].getStudentID());
if (studentID == nom)
{
fnComboBox.setSelectedItem((db.studentList[b1]).getFirstName());
lnComboBox.setSelectedItem((db.studentList[b1]).getLastName());
pnComboBox.setSelectedItem((db.studentList[b1]).getPhoneNumber());
break;
}
}
}
}
}
);
错误发生在这一行,不是当我使用它时,而是当我点击提交按钮时。
int studentID = (int) sidComboBox.getSelectedItem();
我知道它为空,但当它为空时我不会调用该框。那么为什么它告诉我它为空??
最佳答案
问题是您在提交方法中调用 sidComboBox.removeAllItems();
。这会更改选择并因此触发 ActionEvent
,如教程 here 中所述。 .
提出了规避此问题的方法 here
关于java - JComboBox 触发空指针,即使它没有被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61261832/