Java 从JTable中删除行时出现问题

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

我在GUI应用程序中创建了一个
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