2016-05-05 3 views
0

をオーバーライド。プログラムは、10人の選手を追加し、自分の体重とトライ得点を定義し、再びそれらを削除し、編集するユーザーを可能にチームを作成した後保存する機能新しい列を作成する代わりに、だから私は私がチームを(また、それらを削除し、それらを編集)を作成することを可能にするJavaでプログラムをコーディングしてい

。 10人のプレイヤーに達すると、すぐに追加機能が失われ、保存ボタンが有効になります。

私がいる問題がある:私はチームを保存し、それを編集したり、それを削除し、私は再びそれを保存しようとすると、テーブルには、別の列を作成し、右にすべての値の列を移動します。イメージは、私が意味することを少し良く説明します。

初めて保存:第二時間を保存した後 When saved for first time

After saving 2nd time

セーブ機能のためのコードがである次の:私は本当に理解することはできません

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方法:あなたの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

'saveTable'方法を共有してください。 。 saveTableだからあなたは、保存ファイルの内容は全く新しいチームによって上書きされたい – rdonuk

+0

@rdonukはちょうど編集しましたか? – JGuerra

+0

利用できるよう –

答えて

0

、単に与えられたファイルの内容を削除し、その後、このように書くための新しいものを開きます。

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)); 
+0

私はJavaを初めて使ったので愚かな質問かもしれませんが、内容を削除することを意味するときはfor文またはBufferedWriterの後の実際のディレクトリに移動しますか?ありがとう – JGuerra

+0

私はsaveTableメソッドでこのコードを試しましたが、もう一度saveボタンを押してみると、試行列とBodyweight列が仮想列の作成のように右に移動します。何か案が? – JGuerra

関連する問題