-1

所以我在 MytableModel 中创建方法

public void removeRow(int row) {

            if (getSelectedUser(row) != null) {
                Authorisation.userMap.remove(getSelectedUser(row).getName());
                list.remove(getSelectedUser(row));
                System.out.println(list);
                Registration.writeToFile();
            }

            fireTableRowsDeleted(row, row);
            fireTableDataChanged();
        }

然后在外部类中我创建方法

public void deleteFromTable() {

        delete.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                int index = usersTable.getSelectedRow();
                model.removeRow(index);
            }
        });
    }

并在其他类中调用为

AdminFrame af = new AdminFrame(frame);
af.deleteFromTable();

在从 ArrayList 中删除所选行之前,表未更新。怎么了?

4

1 回答 1

0

当我从表中删除一行时,我从 ArrayList 中删除了记录,

所有更新都应该对 TableModel 进行。所以你需要在你的 TableModel 中创建一个类似 removeRow(....) 的方法。这个方法会做两件事:

  1. 从 ArrayList 中删除数据
  2. 调用 fireTableRowsDeleted(...)

或者更简单的方法是使用Row Table Modelwhich 为您完成大部分代码。您需要做的就是扩展类以实现 getValueAt() 和 setValueAt() 方法,如JButtonTableModel.java示例所示。

即使您决定不使用 RowTableModel,它也会让您了解如何在 TableModel 中实现 removeRow(...) 方法

于 2013-10-13T17:39:59.763 回答