我对这个方法很生气,当我删除数据库中的一行时会导致运行时NullPointer异常:
private void menuListValueChanged(javax.swing.event.ListSelectionEvent evt) {
int index = menuList.getSelectedIndex();
int size = model.getSize();
if (index >= 0) {
bDeleteMenu.setEnabled(true);
} else {
bDeleteMenu.setEnabled(false);
}
Menu selectedMenu = (Menu)menuList.getSelectedValue();
menuName.setText(selectedMenu.getMenuName());
}
错误在这一行: menuName.setText(selectedMenu.getMenuName());
仅在我删除项目时发生。 这是错误: 线程中的异常" AWT-EventQueue-0"显示java.lang.NullPointerException。 我想这是因为当我删除Jlist中的项目时,选择不会自动更改为下一个,或类似的东西。
这是我用来删除项目的方法:
private void bDeleteMenuActionPerformed(java.awt.event.ActionEvent evt) {
Menu selectedMenu = (Menu)menuList.getSelectedValue();
selectedMenu.getMenuName();
int index = menuList.getSelectedIndex();
DBConnection.deleteMenu(selectedMenu);
int size = model.getSize();
if (size == 0) {
bDeleteMenu.setEnabled(false);
} else {
if (index == model.getSize()) {
index--;
}
menuList.setSelectedIndex(index);
menuList.ensureIndexIsVisible(index);
}
model.removeElement(selectedMenu);
menuName.setText("");
}
谢谢!
答案 0 :(得分:2)
只有在选择了某些内容的情况下,才能检索所选菜单的名称。
Replce
if (index >= 0) {
bDeleteMenu.setEnabled(true);
} else {
bDeleteMenu.setEnabled(false);
}
Menu selectedMenu = (Menu)menuList.getSelectedValue();
menuName.setText(selectedMenu.getMenuName());
与
if (index >= 0) {
bDeleteMenu.setEnabled(true);
Menu selectedMenu = (Menu)menuList.getSelectedValue();
menuName.setText(selectedMenu.getMenuName());
} else {
bDeleteMenu.setEnabled(false);
}
希望这有帮助。