我有一个JTable每当JTable上的某些内容发生变化(一行被删除,更改或添加)时,我需要将其保存在文件中。
是否有一个监听器只能获得更改的行?获取整个表格太复杂了,检查哪个条目不同等等。
编辑:数据已经在表格中,我需要找出哪些数据发生了变化,因为我以后再使用它......
答案 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
}