我已经拥有的是一个JTable附有MyTableModel表格模型的表格。我有一种在修改表格单元格时tableChanged()将表格数据写入data.csv文件的方法。这意味着每次用户输入新数据时都会将表数据写入文件。相反,我希望有一个菜单项,用户单击“保存”,然后继续执行保存到文件的代码。
@Override
public void tableChanged(TableModelEvent e) {
int row = e.getFirstRow();
int column = e.getColumn();
TableModel model = (TableModel) e.getSource();
String columnName = model.getColumnName(column);
Object data = model.getValueAt(row, column);
BufferedWriter bw = null;
FileWriter fw = null;
String rivi = "";
try {
fw = new FileWriter("data.csv");
bw = new BufferedWriter(fw);
for (int i = 0; i < model.getRowCount(); i++) {
for (int j = 0; j < model.getColumnCount(); j++) {
if (j == 69) {
rivi += model.getValueAt(i, j);
} else {
rivi += model.getValueAt(i, j) + ",";
}
}
if (i != 69) {
rivi += "\n";
}
}
bw.write(rivi);
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
if (bw != null) {
bw.close();
}
if (fw != null) {
fw.close();
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
假设我理解正确,我需要的是将文件保存代码从tableChanged()方法移动到actionPerformed()方法,但我不知道如何TableModelEvent e从方法中获取参数tableChanged()并在方法中使用它actionPerformed(),以便我可以获得表数据通过TableModel model = (TableModel) e.getSource()并将其保存到文件中。
@Override
public void actionPerformed(ActionEvent e) {
// File saving code here?
}
手掌心
相关分类