1

我创建了一个文本文件,其中存储了一些取自文本字段的变量。但是为了向这个文本文件提交新变量,我需要关闭我的程序并重新打开它。该dispose();命令关闭了JFrame将我带到我的主菜单,但再次打开菜单并提交不同的值时,前一次的值已重新提交。有没有简单的方法来修改这个?

这是我写的 .txt 代码:

public class writeto {

static String data = AddProperty.inputdata;
BufferedWriter out;

public writeto(){
        try{
            out = new BufferedWriter(new FileWriter("writeto.txt", true));

            out.write(data);

            out.newLine();

            out.close();

        }catch(IOException e){

            System.out.println("you have an error" + e);
        }
    }
}

以及在我的addproperty班级中调用该方法的位置

        submitproperty.addActionListener(new ActionListener()
        {

        public void actionPerformed(ActionEvent e)
            {
              housenumber1 = houseNumber.getText();
              streetname1 = streetName.getText();
              town1 = town.getText();
              postcode1 = postcode.getText();
              beds1 = beds.getText();
              price1 = price.getText();
              type1 = type.getText();

            inputdata = housenumber1 + " " + streetname1 + " " + town1 + " " + 

            postcode1 +" " + beds1 + " " + price1 + " " + type1;

             writeto write = new writeto();
             dispose();
            }
       });
    }
4

2 回答 2

3

从您的菜单中,您应该始终使用的小部件(如文本字段)创建一个的JFrame 。一个的文本字段没有内容,如果你再次显示一个文本字段,它仍然会显示它以前的内容。


补充说明:

  • 请使用标准命名约定 - 不仅在您向他人展示代码时。在您的情况下:类名应以大写字母开头,首选驼峰式表示法 ( writeto -> WriteTo)
  • 该类writeto滥用构造函数。构造函数中的代码不会创建writeto对象,而是将一些字符串转储到文件中。将这种代码放在方法中,而不是构造函数中。
  • 如果发生异常,BufferedWriter将不会关闭。看看stackoverflow,很多问题/答案都显示了正确的io关闭模式
  • 处理 jframe 是有风险的 - 代码在按下按钮后执行(正确?),在框架上显示的按钮上的方法内(正确?)。在这种情况下,按钮可能会在按钮对象上的方法仍在执行时被释放。setVisible(false)如果您只想隐藏 JFrame(如“关闭对话框”),请尝试
于 2011-05-16T13:33:14.030 回答
2

您将从使用数据库而不是文本文件中受益匪浅。此外,您的问题表明,不仅对 Swing,而且对基本的 CRUD(创建、读取、更新、删除)功能缺乏了解。

要回答您的问题,您可以使用 textField1.setText(""); 清除您的文本字段;

我会阅读有关使用数据库存储数据的内容。它会让你的生活更轻松。

于 2011-05-16T13:32:01.590 回答