如何在不关闭整个程序的情况下从JTextFields中清除变量?

时间:2011-05-16 13:24:19

标签: java swing text-files writefile

我创建了一个文本文件,用于存储从文本字段中获取的一些变量。但是为了向这个文本文件提交新变量,我需要关闭我的程序并重新打开它。 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();
            }
       });
    }

2 个答案:

答案 0 :(得分:3)

在菜单中,您应始终使用 new 小部件(如文本字段)创建 new JFrame。 new 文本字段没有内容,如果再次显示文本字段,它仍会显示之前的内容。


补充说明:

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

答案 1 :(得分:2)

使用数据库而不是文本文件可以大大受益。此外,您的问题显示基本缺乏Swing知识,但基本的CRUD(创建,读取,更新,删除)功能。

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

我会读到使用数据库存储数据。它会让你的生活更轻松。