Не могу удалить или обновить данные данные из таблицы jTable

У меня есть JTable, где я использовал свою Модель данных основанную на интерфейсе TableModel вместе с TableRowSorter: и есть функции добавления, обновления и удаление данных из этой таблицы по выбору строки из таблицы Работает только добавление и я не могу понять почему не работает удаление и обновление данных Выбор конкретной строки я реализовал так:

public class MDIApplication extends javax.swing.JFrame implements ActionListener{

TableRowSorter<DefaultTableModel> trs = new TableRowSorter(jTable1.getModel());
       jTable1.setRowSorter(trs);
        List<RowSorter.SortKey> sortKeys = new ArrayList<>();
        sortKeys.add(new RowSorter.SortKey(3, SortOrder.ASCENDING));
       sortKeys.add(new RowSorter.SortKey(1, SortOrder.DESCENDING));
        trs.setSortKeys(sortKeys);
        trs.sort();

 jTable1.addMouseListener(new java.awt.event.MouseAdapter() {public void mouseClicked(java.awt.event.MouseEvent evt) { int setSelectedRow = jTable1.rowAtPoint(evt.getPoint());
         idTeacherTextField.setText(Global.tableModel.getValueAt(trs.convertRowIndexToModel(setSelectedRow),  0).toString());
                codeUTextField.setText(Global.tableModel.getValueAt(trs.convertRowIndexToModel(setSelectedRow), 1).toString());
                numQTextField.setText(Global.tableModel.getValueAt(trs.convertRowIndexToModel(setSelectedRow), 2).toString());
                amountDTextField.setText(Global.tableModel.getValueAt(trs.convertRowIndexToModel(setSelectedRow), 3).toString());
            }
        });

}

А функции добавления удаления и обновления выглядят так + некоторый код для понимания общей картины

public class Result {
    private String teacherId; // Айди Преподователя
    private String codeUniversity; // Шифр Вуза
    private int numQuarter; // Номер Квартала
    private int amountDays; // Количество Дней



    public Result() {

        teacherId = "";
        codeUniversity = "";
        numQuarter = 0;
        amountDays = 0;


    }

    public Result(String teacherId, String codeUniversity, int numQuarter, int amountDays){

        this.teacherId = teacherId;
        this.codeUniversity = codeUniversity;
        this.numQuarter = numQuarter;
        this.amountDays = amountDays;

    }


    public String getTeacherId() { return teacherId; }
    public String getCodeUniversity() { return codeUniversity; }
    public int getNumQuarter() { return numQuarter; }
    public int getAmountDays() { return amountDays; }


    public void setTeacherId(String teacherId) { this.teacherId = teacherId; }
    public void setCodeUniversity(String codeUniversity) { this.codeUniversity = codeUniversity; }
    public void setNumQuarter(int numQuarter) { this.numQuarter = numQuarter; }
    public void setAmountDays(int amountDays) { this.amountDays = amountDays; }



}

public class ResultTableModel extends AbstractTableModel {
private static final int COLUMN_ID = 0;
        private static final int COLUMN_CODE = 1;
        private static final int COLUMN_NUM = 2;
        private static final int COLUMN_AMOUNT = 3;
        private String[] columnNames = {"Номер Преподавателя", "Шифр Вуза", "Номер Квартала", "Количество Дней"};
         List<Result> results;

        public ResultTableModel(List<Result> results) {
            this.results = results;

        }


        @Override
        public int getRowCount() {
            return results.size();
        }

        @Override
        public int getColumnCount() {
            return columnNames.length;
        }

        @Override
        public String getColumnName(int columnIndex) {
            return columnNames[columnIndex];
        }

        public Class<?> getColumnClass( int columnIndex) {
            if (results.isEmpty()) {
                return Object.class;
            }
            return getValueAt(0, columnIndex).getClass();
        }

        public Object getValueAt(int rowIndex, int columnIndex) {
            Result res = results.get(rowIndex);
            Object returnValue = null;

            switch (columnIndex) {
                case COLUMN_ID:
                    returnValue = res.getTeacherId();
                    break;
                case COLUMN_CODE:
                    returnValue = res.getCodeUniversity();
                    break;
                case COLUMN_NUM:
                    returnValue = res.getNumQuarter();
                    break;
                case COLUMN_AMOUNT:
                    returnValue = res.getAmountDays();
                    break;
                default:
                    throw new IllegalArgumentException("Invalid column index");
            }

            return returnValue;
        }




    }

public class MDIApplication extends javax.swing.JFrame implements ActionListener{

Global.table = new ResultGroup();
        Global.results = new ArrayList<>();
        Global.tableModel = new ResultTableModel(Global.results);

 private void addButtonActionPerformed(java.awt.event.ActionEvent evt) { //добавление новых данных из текстовых полей

        int n,n2;
        String str1, str2, str3 ,str4;
        str1=idTeacherTextField.getText(); str2=codeUTextField.getText();  str3=numQTextField.getText(); str4=amountDTextField.getText();
        if (str1.equals("")||str2.equals("")||str3.equals("")||str4.equals("")){
            sMessages.setText("Задайте значения полей");
            return;}
        try{//Контролируем исключения при преобразовании из String в число
            n=Integer.parseInt(str3);
        }//try
        catch (NumberFormatException  e){// обработчик исключения для try
            sMessages.setText("   Задайте правильно число голов");
            return;}
        try{//Контролируем исключения при преобразовании из String в число
            n2=Integer.parseInt(str4);
        }//try
        catch (NumberFormatException  e){// обработчик исключения для try
            sMessages.setText("   Задайте правильно число голов");
            return;}
        sMessages.setText(
                "   Запрос на добавление записи в таблицу");
        if (!Global.table.addResult(new Result(str1,str2,n,n2)))
            sMessages.setText(
                    "   Запись не добавлена, возможно нарушена уникальность ключа");
        Global.updateJTable(Global.table.getResults());
        idTeacherTextField.setText(""); codeUTextField.setText(""); numQTextField.setText(""); amountDTextField.setText("");
    }

 delButton.addActionListener(new java.awt.event.ActionListener() { // Удаление
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                int n,n2;
                String str1, str2, str3 ,str4;
                str1=idTeacherTextField.getText(); str2=codeUTextField.getText();  str3=numQTextField.getText(); str4=amountDTextField.getText();
                if (str1.equals("")||str2.equals("")||str3.equals("")||str4.equals("")){
                    sMessages.setText("Задайте значения полей");
                    return;}
                    n=Integer.parseInt(str3);
                    n2=Integer.parseInt(str4);

                sMessages.setText(
                        "   Запрос на удаление записи по ключу");
                Global.table.delResult(new Result(str1,str2,n,n2));
                Global.updateJTable(Global.table.getResults());
                idTeacherTextField.setText(""); codeUTextField.setText(""); numQTextField.setText(""); amountDTextField.setText("");

            }
        });



 private void updateButtonActionPerformed(java.awt.event.ActionEvent evt) { //обновление
        int n,n2;
        String str1, str2, str3 ,str4;
        str1=idTeacherTextField.getText(); str2=codeUTextField.getText();  str3=numQTextField.getText(); str4=amountDTextField.getText();
        if (str1.equals("")||str2.equals("")||str3.equals("")||str4.equals("")){
            sMessages.setText("Задайте значения полей");
            return;}
        try{//Контролируем исключения при преобразовании из String в число
            n=Integer.parseInt(str3);
        }//try
        catch (NumberFormatException  e){// обработчик исключения для try
            sMessages.setText("   Задайте правильно число голов");
            return;}
        try{//Контролируем исключения при преобразовании из String в число
            n2=Integer.parseInt(str4);
        }//try
        catch (NumberFormatException  e){// обработчик исключения для try
            sMessages.setText("   Задайте правильно число голов");
            return;}
        sMessages.setText(
                "   Запрос на обновление записи в таблице");
        if (!Global.table.updateResult(new Result(str1,str2,n,n2)))
            sMessages.setText(
                    "   Запись не обновлена, возможно записи с таким ключом нет");
        Global.updateJTable(Global.table.getResults());
        idTeacherTextField.setText(""); codeUTextField.setText(""); numQTextField.setText(""); amountDTextField.setText("");
    }
}

}

public class ResultGroup {
public boolean addResult(Result res){

        if (getResult(res)!=null)
            return false;
        if (results.add(res)) return true;
        else return false;
    }


    public boolean delResult(Result res){
        if (getResult(res)!=null)
            return false;
        if (results.remove(res)) return true;
        else return false;
    }
    public boolean updateResult(Result res){

        Result r = getResult(res);
        if (r!=null) {
            r.setTeacherId(res.getTeacherId());
            r.setCodeUniversity(res.getCodeUniversity());
            r.setNumQuarter(res.getNumQuarter());
            r.setAmountDays(res.getAmountDays());

            return true;
        }
        return false;
    }
}

public class Global { // Глобальный класс

    public static ResultGroup table;

    public static List <Result> results;

    static ResultTableModel tableModel;

    public static void updateJTable(List <Result> res){

        results.clear();
        results.addAll(res);
        tableModel.fireTableDataChanged();
    }
}

Я новичок в программировании помогите пожалуйста)


Ответы (0 шт):