获取已更改/添加或删除的JTable中的行

时间:2014-05-15 18:51:37

标签: java swing jtable

我有一个JTable每当JTable上的某些内容发生变化(一行被删除,更改或添加)时,我需要将其保存在文件中。

是否有一个监听器只能获得更改的行?获取整个表格太复杂了,检查哪个条目不同等等。

编辑:数据已经在表格中,我需要找出哪些数据发生了变化,因为我以后再使用它......

1 个答案:

答案 0 :(得分:2)

实现这一目标的最简单方法是实现自己的TableModel并覆盖fire ...() - Methods。

这样的事情:

import javax.swing.table.DefaultTableModel;

public class MyTableModel extends DefaultTableModel {

    @Override
    public void fireTableCellUpdated(int row, int column) {
        super.fireTableCellUpdated(row, column);
        //call your event
    }

    @Override
    public void fireTableRowsDeleted(int firstRow, int lastRow) {
        super.fireTableRowsDeleted(firstRow, lastRow);
        //call your event
    }

    @Override
    public void fireTableRowsInserted(int firstRow, int lastRow) {
        super.fireTableRowsInserted(firstRow, lastRow);
        //call your event
    }

    @Override
    public void fireTableRowsUpdated(int firstRow, int lastRow) {
        super.fireTableRowsUpdated(firstRow, lastRow);
        //call your event
    }

    @Override
    public void fireTableDataChanged() {
        super.fireTableDataChanged();
        //call your event
    }

    @Override
    public void fireTableStructureChanged() {
        super.fireTableStructureChanged();
        //call your event
    }
}

您可以覆盖DefaultTableModel中的每个方法,甚至是删除该行的方法。所以你可以在删除之前保存它们。

@Override
public void removeRow(int row) {
    //save the row
    super.removeRow(row); // this deletes it
}