Java swing 表格每行后嵌入删除按钮,点击按钮删除该行,但点击按钮所有行删剩最后一行时报错,如何解决?

图片说明


package mytest;
import java.awt.Component;
import java.awt.Component;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;
import javax.swing.table.*;

import org.jfree.xml.generator.ModelBuilder;

public class T extends JFrame{

    private static final long serialVersionUID = 1L;
    static  JTable table = null;
    static DefaultTableModel model=null;
    static JScrollPane js=null ;

    public T(){

    model = new DefaultTableModel(
            new String[] {
                    "课程名","教师","学分","学时","课程类别","课程性质","上课地点","上课时间","余量",""
                },2
            );

    table = new JTable(model);

    table.getColumnModel().getColumn(9).setCellEditor(new MyRender());//设置编辑器
    table.getColumnModel().getColumn(9).setCellRenderer(new MyRender() );

    js = new JScrollPane(table);

    this.add(js);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setVisible(true);
    this.setSize(399, 300);
    this.setLocationRelativeTo(null);

    }

    public static void main(String[] args) {
    // TODO Auto-generated method stub
        new T();
    }

    }

    //渲染 器 编辑器
    class MyRender extends AbstractCellEditor implements TableCellRenderer,ActionListener, TableCellEditor{

        private static final long serialVersionUID = 1L;
        private JButton button =null;

        public MyRender(){

        button = new JButton("删除");
        button.addActionListener(this);
    }
        @Override
        public Object getCellEditorValue() {
        // TODO Auto-generated method stub
        return null;
        }
        @Override
        public Component getTableCellRendererComponent(JTable table, Object value,
        boolean isSelected, boolean hasFocus, int row, int column) {
        // TODO Auto-generated method stub
        return button;
        }
        @Override
        public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
            int row = T.table.getSelectedRow();


            if(row != -1){
                T.model.removeRow(row);
            }



        }
        @Override
        public Component getTableCellEditorComponent(JTable table, Object value,
        boolean isSelected, int row, int column) {
        // TODO Auto-generated method stub
        return button;
    }



T.model.removeRow(row-1)