0

我正在使用 Java 为存储我的硬盘的电影制作一个库。我做了 1 种方法来保存我键入 i 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 内容的一些东西?

4

1 回答 1

3

在将每行添加到行之前,您需要将其拆分为三个值。

tm.addRow( bfw.readLine().split("\t") );

当然,这不会进行任何数据类型转换,但如果您想要的只是一系列可以工作的字符串。

可能宁愿做以下事情:

while( (line = bfw.readLine() ) != null ) {
   tm.addRow( line.split("\t") );
}

在 for 循环中,您的表尚未填充,因此可能为零并且什么也没有发生。这会读取行,直到文件数据完成,并将其添加到表中。

于 2013-10-18T02:57:29.713 回答