ListSelectionEvent的Java空指针异常
当我删除数据库中的一行时,这种方法会导致运行时NullPointer异常,我对此非常恼火:ListSelectionEvent的Java空指针异常,java,swing,awt,jlist,Java,Swing,Awt,Jlist,当我删除数据库中的一行时,这种方法会导致运行时NullPointer异常,我对此非常恼火: private void menuListValueChanged(javax.swing.event.ListSelectionEvent evt) { int index = menuList.getSelectedIndex(); int size = model.getSize(); if (ind
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("");
}
谢谢大家! 检索所选菜单的名称仅在选择某项内容时才有意义 答复:
if (index >= 0) {
bDeleteMenu.setEnabled(true);
} else {
bDeleteMenu.setEnabled(false);
}
Menu selectedMenu = (Menu)menuList.getSelectedValue();
menuName.setText(selectedMenu.getMenuName());
与
希望这有帮助。您确认了
getMenuName()
是否没有返回null
值吗?您检查了哪些值是null
值了吗?它可以是selectedMenu
,menuName
,selectedMenu.getMenuName()
,也许可以尝试打印出其中的三个,为您提供一个指向正确方向的指针(而不是空指针)。为了更快地获得更好的帮助,请发布一个(最小的完整且可验证的示例)。它工作正常,谢谢!但我不明白为什么。当没有选择任何内容时,index
的值为-1。因此,在这种情况下,selectedMenu
将是null
,因为menuList.getSelectedValue()
将返回null。所以你会在下一行得到一个nullpointerexception,非常感谢!但是现在我不明白为什么在我以前的版本中它工作得很好,不同的是现在我使用的是(菜单)对象,以前我使用的是字符串,这是行字符串字段=(String)menuList.getSelectedValue();menuName.setText(字段);我们在if街区外selectedMenu。getMenuName()给出了nullpointerexception。在您以前的代码中,selectedMenu没有被取消引用,您没有得到任何例外的消息,知道它有帮助。如果你觉得它有帮助,让别人知道你的问题已经解决了,你可能会想接受它。祝你好运
if (index >= 0) {
bDeleteMenu.setEnabled(true);
Menu selectedMenu = (Menu)menuList.getSelectedValue();
menuName.setText(selectedMenu.getMenuName());
} else {
bDeleteMenu.setEnabled(false);
}