java中JTable中的swing-remove元素
我想建立一个小游戏,这将是一个JTable
与一些值和JTextField
以上的表格,用户应该在文本字段中键入任何值,如果它存在于表格中,它将删除,如果它不存在,用户将得到消息,
我试图删除用户在文本字段中写入的值,并编写了以下代码:
String value = txt_num.getText();
for (int i = 0; i < table.getRowCount(); i++) {
for (int j = 0; j < table.getColumnCount(); j++) {
if (tbl.getModel().getValueAt(i, j).toString().equals(value)) {
tbl.setValueAt(null, i, j);
} else {
JOptionPane.showMessageDialog(null, "Value isn't exist");
}
}
}
此代码正确删除,但删除了输入的第一个值,但当我输入另一个值时,出现以下错误:
我如何解决这个问题
# 1 楼答案
首先你需要了解
NullPointerException
到底是什么,以及为什么会发生@尤尔的评论会对你有所帮助关于你的问题,问题在这里的
if
条款中:这是第一次工作,因为
getValueAt
返回一个有效的对象,您可以在其中执行toString
。但是,在将表中单元格的值设置为null
并再次尝试相同的操作之后,将从getValueAt
返回null
,并尝试对null
对象执行toString
方法。这当然不起作用,并导致您显示的错误解决方案是:
在尝试将返回值转换为字符串之前,实现一些逻辑来检查返回值是否为
null
。 例如:或者,如果要删除该值,请不要将其设置为
null
,但可以将其设置为""