我正在使用Java为我的电影制作存储我的硬盘的库。我做了1个方法来保存我输入的所有内容我jTable和我在按钮事件(鼠标点击)上调用此方法它运作良好,我有一个很好的文本文件。然后我做了一个方法来加载文本文件到我的表我没有得到任何错误编译但当我运行应用程序并单击按钮加载表没有任何事情发生,我已经添加打印到方法只是为了看看方法运行和它的剂量
这是我将表保存到文本文件的代码(工作方法):
public void saveTable()throws Exception
{
BufferedWriter bfw = new BufferedWriter(new FileWriter("Data.txt"));
for(int i = 0 ; i < jTable2.getColumnCount() ; i++)
{
bfw.write(jTable2.getColumnName(i));
bfw.write("\t");
}
for (int i = 0 ; i < jTable2.getRowCount(); i++)
{
bfw.newLine();
for(int j = 0 ; j < jTable2.getColumnCount();j++)
{
bfw.write((String)(jTable2.getValueAt(i,j)));
bfw.write("\t");;
}
}
bfw.close();
}
这是我的文本文件:
Movies Map HDD
Test no 1
这是我的加载方法:
public void loadTable()throws Exception{
DefaultTableModel tm = (DefaultTableModel) jTable2.getModel();
BufferedReader bfw = new BufferedReader(new FileReader("Data.txt"));
for (int i = 0 ; i < jTable2.getRowCount(); i++)
{
tm.addRow(new Object[] { bfw.readLine()});
}
bfw.close();
}
我是否想念一些BufferReader内容?
答案 0 :(得分:3)
在将每行添加到行之前,您需要将每行分成三个值。
tm.addRow( bfw.readLine().split("\t") );
当然,这不会进行任何数据类型转换,但如果你想要的只是一系列字符串,那么
可能宁愿做以下事情:
while( (line = bfw.readLine() ) != null ) {
tm.addRow( line.split("\t") );
}
在for循环中,您的表格尚未填充,因此&#39; ll可能为零且没有任何反应。这将读取行直到文件数据完成,并将其添加到表中。