所以我用Java编写程序,允许我创建团队(也删除它们并编辑它们)。
创建团队后,该程序允许用户添加10个玩家,定义他们的体重并尝试评分,然后再次删除和编辑它们。现在,只要他们达到10个玩家,就会失去添加更多功能的能力,并且启用了保存按钮。
我遇到的问题是:如果我保存一个团队然后对其进行编辑或删除它并尝试再次保存,则该表会创建另一个列并将所有值向右移动一列。这些图片会更好地说明我的意思。
第一次保存时:
第二次保存后:
保存功能的代码如下:
private void btn_SaveTeamActionPerformed(java.awt.event.ActionEvent evt) {
DefaultTableModel pattern = (DefaultTableModel) table_PlayerBoard.getModel();
try {
saveTable((String) table_LeaderBoard.getValueAt(table_LeaderBoard.getRowCount() - 1, 0));
} catch (Exception ex) {
Logger.getLogger(Mainpage.class.getName()).log(Level.SEVERE, null, ex);
}
enableTeamEdit();
btn_SaveTeam.setEnabled(false);
JOptionPane.showMessageDialog(null, "Team Saved");
pattern.setRowCount(0);
btn_RankTeams.setEnabled(true);
counter = 0;
}
ArrayList <Integer> triesList = new ArrayList();
ArrayList <String> teamList = new ArrayList();
boolean check = false;
我真的不明白错误在哪里。如果还有其他信息,请告诉我。提前谢谢。
saveTable方法:
public void saveTable(String fileName)throws Exception {
DefaultTableModel chart = (DefaultTableModel) table_PlayerBoard.getModel();
BufferedWriter bfw = new BufferedWriter(new FileWriter("C:\\Users\\" + System.getProperty("user.name") + "\\Desktop\\Sports\\" + fileName + ".txt"));
System.out.println(fileName);
for (int i = 0 ; i < chart.getRowCount(); i++)
{
for(int j = 0 ; j < chart.getColumnCount();j++)
{
bfw.write((chart.getValueAt(i,j).toString()));
bfw.write("\t");;
}
bfw.newLine();
}
bfw.close();
}
答案 0 :(得分:0)
在你的saveTable(...)
方法中,只需删除给定文件的内容,然后打开一个新文件,如下所示:
String path = "C:\\Users\\" + System.getProperty("user.name") + "\\Desktop\\Sports\\" + fileName + ".txt";
File file = new File(path);
file.delete();
file = new File(path);
BufferedWriter bfw = new BufferedWriter(new FileWriter(file));