我有一個JTable當JTable上的某些內容發生更改(一行被刪除,更改或添加)時,我需要將其保存在文件中。獲取更改/添加或刪除的JTable中的行
是否有一個監聽器來獲取只是被更改的行?它的方法太複雜,以獲得整個表,檢查哪個條目是不同等
編輯:數據已經在表中,我需要找出哪些數據得到了改變,因爲我以後使用它...
我有一個JTable當JTable上的某些內容發生更改(一行被刪除,更改或添加)時,我需要將其保存在文件中。獲取更改/添加或刪除的JTable中的行
是否有一個監聽器來獲取只是被更改的行?它的方法太複雜,以獲得整個表,檢查哪個條目是不同等
編輯:數據已經在表中,我需要找出哪些數據得到了改變,因爲我以後使用它...
最簡單的方法就是實現你自己的TableModel並重寫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
}
理論上正確的答案+1,但是OP提到了FileIO,在擺動中EDT/Concurency可能存在問題 – mKorbel
您是否嘗試過在JTable中添加或刪除數據? – Patrick
@Patrick我編輯了我的帖子。那麼,我需要改變文件中的行,所以我需要讓它們以某種方式得到它們... – user3549340
請顯示一些代碼,您有自己的TableModel或以何種方式將數據添加到您的JTable。一些代碼將有助於爲您找到解決方案。 – Patrick