DefaultTableModel を使用して、単純なユーザー統計ページを表示しています。データをファイルに正常に保存しましたが、読み込めません (loadData()
一番下の方法を参照してください)。したがって、プログラムを起動すると、ファイルが読み取られ、値がモデルに設定され、テーブル (JPanel 内) に既存のデータが表示されます。これが私のコードです。「間違っている」ように見えますが、どこにあるのかわかりません。誰か私に頭を上げてもらえますか?ありがとうIA
public class Statistics extends JPanel {
public Object[][] data;
public DefaultTableModel model;
public PrintWriter saveStats;
public Statistics() {
super(new GridLayout(1,0));
String[] columnNames = {"Name", "Games Played", "Games Won"};
Object[][] data = {};
model = new DefaultTableModel(data, columnNames);
JTable table = new JTable(model);
table.setFillsViewportHeight(true);
table.setVisible(true);
table.setEnabled(false);
JScrollPane scrollPane = new JScrollPane(table);
add(scrollPane);
}
public void addRow(Object[] objects) {
model.addRow(objects);
}
public void updateGamesPlayed(String userFolderName, int gamesPlayed) {
int rowCount = model.getRowCount();
int columnCount = model.getColumnCount();
for (int i = 0; i < rowCount; i++){
for(int j = 0; j < columnCount; j++){
if (model.getValueAt(i,j) == userFolderName){
int count = (Integer) model.getValueAt(i, j+1);
count += gamesPlayed;
model.setValueAt(gamesPlayed, i, j+1);
}
}
}
saveGameStats(model);
}
public void saveGameStats(DefaultTableModel model){
this.model = model;
File gameStats;
try {
gameStats = new File("GameStats.txt");
System.out.print(gameStats);
saveStats = new PrintWriter(gameStats);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for (int i = 0; i < model.getRowCount(); i++){
for (int j = 0; j < model.getColumnCount(); j++){
saveStats.print(model.getValueAt(i,j)+ " ");
}
}
saveStats.close();
}
public void loadData() {
String name = "";
int games = 0;
int won = 0;
Scanner loadData = new Scanner("GameStats.txt");
while(loadData.hasNextLine()){
if (loadData.hasNext()){
name = loadData.next();}
else if (loadData.hasNextInt()){
games = loadData.nextInt();}
else if (loadData.hasNextInt()){
won = loadData.nextInt();}
for (int i = 0; i < model.getRowCount(); i++){
for (int j = 0; j < model.getColumnCount(); j++){
model.setValueAt(name,i,j);
model.setValueAt(games, i, j+1);
model.setValueAt(won, i, j+2);
}
}
}
}
}