【问题标题】:How to save information from JTable to a File?如何将信息从 JTable 保存到文件?
【发布时间】:2014-12-08 21:05:51
【问题描述】:

这是我的情况:

到目前为止,我和我的小组设法从外部文件中读取信息并将其放入 JTable 中。但是我们需要一个更新按钮。所以我们猜想我们应该在编辑 JTable 里面的东西之后从 JTable 中获取所有信息,并将其替换为同一文件中的当前信息。所以我们有点认为我们必须覆盖旧文件。

到目前为止,我们得到了这个:(对于 int i... 是代码的一部分,但无法在灰色区域内获取它:P)

for(int i = 0; i < model.getRowCount(); i++) {
    p += model.getValueAt(i, 0) + " "
                + model.getValueAt(i, 1) + " "
                + (Integer) model.getValueAt(i, 2) + " "
                + model.getValueAt(i, 3) + " "
                + (Integer)model.getValueAt(i, 4) + " "
                + model.getValueAt(i, 5) + " "
                + model.getValueAt(i, 6) + " "
                + model.getValueAt(i, 7) + " "
                + (Integer)model.getValueAt(i, 8) + "\n";
}

// Update File
SaveMember sm = new SaveMember();
sm.update(p);

在我们的 SaveMember.java 中,我们得到了:

public void update(String x) throws Exception {
    File f = new File("Members/Members.txt");
    PrintStream output = new PrintStream(f);  
    output.print(x);

所以现在当我们去更改数据并按下按钮更新时,它根本没有做任何事情,也不会用新数据替换旧数据。感谢阅读! :)

【问题讨论】:

  • 要使用代码格式,请选择文本并单击消息发布编辑表单顶部的{} 按钮。

标签: java swing io jtable jframe


【解决方案1】:

我不确定。如果您仔细检查了您的代码是否已执行(也许您忘记将 ActionListener 附加到您的按钮 - 我们都会不时这样做...)尝试刷新输出流并在之后关闭流。

【讨论】:

    【解决方案2】:

    首先检查你的 for 循环中的代码是否被执行。在 for 循环之后设置断点并检查字符串 p。如果您不熟悉调试,请使用System.out.println(p) 将字符串打印到控制台。

    如果你的代码没有被执行:检查为什么你的代码所在的方法没有被调用。也许您忘记将动作监听器附加到更新按钮,或者动作监听器在某些情况下会提前返回。

    如果你的代码被执行:你如何处理update方法抛出的异常?确保使用您的记录器记录它或将其打印到控制台(再次通过System.out.println(exc))。如果您收到 FileNotFoundException,则该文件的路径不正确。

    【讨论】:

      猜你喜欢
      • 2012-09-13
      • 1970-01-01
      • 2020-12-07
      • 1970-01-01
      • 2018-05-30
      • 1970-01-01
      • 2022-08-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多