Java 获取JTable中已更改/添加或删除的行
每当JTable上的某些内容发生更改(一行被删除、更改或添加)时,我就有一个JTable,我需要将其保存在一个文件中 是否有一个侦听器只获取更改的行?获取整个表、检查哪个条目不同等都太复杂了Java 获取JTable中已更改/添加或删除的行,java,swing,jtable,Java,Swing,Jtable,每当JTable上的某些内容发生更改(一行被删除、更改或添加)时,我就有一个JTable,我需要将其保存在一个文件中 是否有一个侦听器只获取更改的行?获取整个表、检查哪个条目不同等都太复杂了 编辑:数据已经在表中,我需要找出哪些数据被更改了,因为我以后会使用它…实现这一点最简单的方法是实现您自己的表模型并覆盖fire…()-方法 大概是这样的: import javax.swing.table.DefaultTableModel; public class MyTableModel exten
编辑:数据已经在表中,我需要找出哪些数据被更改了,因为我以后会使用它…实现这一点最简单的方法是实现您自己的表模型并覆盖fire…()-方法 大概是这样的:
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
}
您是否尝试过从
JTable
中添加或删除数据?@Patrick我编辑了我的帖子。嗯,我需要更改文件中的行,所以我需要以某种方式获取它们…请显示一些代码,您有自己的TableModel,或者以何种方式将数据添加到JTable。一些代码可能有助于为您找到解决方案。理论上正确答案+1,但OP提到FileIO,Swing中的EDT/Concurence可能存在问题