我正在尝试从JTable的文本文件中写入和读取数据。我能够将数据写入文本文件,但是我很难读取并将数据加载回JTable。
写入文件方法
此方法将创建文本文件,并将JTable的各行作为单独的行保存到文件中。
public void saveData() {
try{
PrintWriter writer = new PrintWriter("data.txt", "UTF-8");
for (int row = 0; row < table.getRowCount(); row++) {
for (int col = 0; col < table.getColumnCount(); col++) {
writer.print(table.getValueAt(row, col));
writer.print(":");
}
writer.println();
}
writer.close();
} catch (IOException e) {
}
}
从文件方法中读取
public void loadData() {
File file = new File("data.txt");
Scanner scanner;
try {
scanner = new Scanner(file);
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String[] details = line.split(":");
String name = details[0];
String dueDate = details[1];
String priority = details[3];
model.addTask(name, dueDate, priority);
model.fireTableDataChanged();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
我希望这个方法读取每一行并将这些行分成3个变量,以便我可以将它添加回我的JTable。
例如,文件中的数据保存如下:
A task:None:Low
Task2:2, January:High
因此,这会将第1行分为A task
,None
和Low
,将第2行分为Task2
,2, January
和High
感谢。
答案 0 :(得分:2)
将String priority = details[3];
更改为String priority = details[2];
。
在Java索引中,从0
开始,因此要访问位于第三个索引的最终元素Low
,您必须使用2
。
答案 1 :(得分:2)
String priority = details[3];
这里它必须是2而不是3,因为你得到第三个元素,它们从0开始编号。