【发布时间】:2014-04-09 15:21:07
【问题描述】:
当我删除数据库中的一行时,这种方法会导致运行时 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("");
}
谢谢!
【问题讨论】:
-
您确认
getMenuName()没有返回null值吗? -
您是否检查过其中哪个是
null值?可能是selectedMenu,menuName,selectedMenu.getMenuName(),也许可以尝试将这三个打印出来给你一个正确方向的指针(而不是一个空指针哈迪哈) -
为了尽快获得更好的帮助,请发布MCVE(最小完整且可验证的示例)。