Java 从JTable中删除行时出现问题
我在GUI应用程序中创建了一个Java 从JTable中删除行时出现问题,java,swing,nullpointerexception,jtable,row,Java,Swing,Nullpointerexception,Jtable,Row,我在GUI应用程序中创建了一个JTable,我想使用我已经创建的add和remove按钮向其中添加行和删除行,问题是在删除行时,我想获取所选行索引,但在调用getSelectedRow()方法时,我得到了一个NullPointerException。我试着用谷歌搜索它,但没有找到我的问题答案。我也试着阅读java文档,但我发现这个方法通常不会引发异常 代码: // creating the table JTable table = new JTable(model); model.add
JTable
,我想使用我已经创建的add和remove按钮向其中添加行和删除行,问题是在删除行时,我想获取所选行索引,但在调用getSelectedRow()
方法时,我得到了一个NullPointerException
。我试着用谷歌搜索它,但没有找到我的问题答案。我也试着阅读java文档,但我发现这个方法通常不会引发异常
代码:
// creating the table
JTable table = new JTable(model);
model.addColumn("NO.");
model.addColumn("Name");
model.addColumn("Status");
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
table.setRowSelectionAllowed(true);
table.setShowGrid(false);
table.getColumnModel().getColumn(0).setPreferredWidth(28);
table.getColumnModel().getColumn(1).setPreferredWidth(222);
table.getColumnModel().getColumn(2).setPreferredWidth(100);
table.setBackground(color);
table.setPreferredScrollableViewportSize(new Dimension(350,250));
table.setFillsViewportHeight(true);
scroll = new JScrollPane(table);
center.add(scroll);
// adding records to it
public class AddEvent implements ActionListener{
public void actionPerformed (ActionEvent event){
String text = write.getText();
if (!text.equals("") && !text.contains(" ")){
String view = "http://www." + text;
write.setText(null);
model.addRow(new Object[]{model.getRowCount()+1, view,"Active"});
}
}
}
// to remove the selected row
public class RemoveEvent implements ActionListener{
public void actionPerformed (ActionEvent event){
int index = table.getSelectedRow(); // it throws the exception here
table.clearSelection();
System.out.println(index);
if(index != -1){
table.remove(index);
}
}
}
如果在此处引发异常
int index = table.getSelectedRow();
然后,表
可能是null
。要使ActionListener
工作,类成员变量表
应分配给JTable
实例。检查在实例化变量时,是否没有对其进行阴影处理。替换
JTable table = new JTable(model);
与
如果在此处引发异常
int index = table.getSelectedRow();
然后,表
可能是null
。要使ActionListener
工作,类成员变量表
应分配给JTable
实例。检查在实例化变量时,是否没有对其进行阴影处理。替换
JTable table = new JTable(model);
与
你发布的代码不完整,所以我只能猜测一下
JTable table = new JTable(model);
此变量看起来像局部变量,因此其他类无法使用它。您可能在某个地方定义了一个类变量:
JTable table; // this is null
试试这个:
//JTable table = new JTable(model);
table = new JTable(model);
此外,还应从DefaultTableModel中删除数据:
model.removeRow(...);
你发布的代码不完整,所以我只能猜测一下
JTable table = new JTable(model);
此变量看起来像局部变量,因此其他类无法使用它。您可能在某个地方定义了一个类变量:
JTable table; // this is null
试试这个:
//JTable table = new JTable(model);
table = new JTable(model);
此外,还应从DefaultTableModel中删除数据:
model.removeRow(...);
1) 为了更快地获得更好的帮助,请发布一个。2) 最好更改
表格模型
。让桌子自己呆着。1)为了更快地获得更好的帮助,请发布一个。2) 最好更改表格模型
。不用管表本身。谢谢,它现在不再抛出异常,但它无法识别所选行,并为我提供索引值,因为在未选择任何内容时返回-1-1
。您选择了一行吗?是的,我选择了一行,然后按remove,什么都没有发生。它清除了我的选择(按我的命令)并向我发送-1谢谢,现在不再抛出异常,但它无法识别所选行并给我索引值,因为在未选择任何内容时返回-1-1
。您选择了一行吗?是的,我选择了一行,然后按remove,什么都没有发生,只是它清除了我的选择(按照我的命令)并向我发送-1个hanks,它现在不再引发异常,但它无法识别所选行并将索引值作为-1个hanks,它现在不再引发异常,但它无法识别所选行,并将索引的值设为-1