我创建了一个文本文件,用于存储从文本字段中获取的一些变量。但是为了向这个文本文件提交新变量,我需要关闭我的程序并重新打开它。 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();
}
});
}
答案 0 :(得分:3)
在菜单中,您应始终使用 new 小部件(如文本字段)创建 new JFrame。 new 文本字段没有内容,如果再次显示文本字段,它仍会显示之前的内容。
补充说明:
writeto -> WriteTo
)writeto
类滥用构造函数。构造函数中的代码不会创建 writeto
对象,而是将一些字符串转储到文件中。将这种代码放在方法中,而不是构造函数。BufferedWriter
将不会关闭。看看stackoverflow,很多问题/答案显示正确的io-closeing模式setVisible(false)
(如“关闭对话框”)答案 1 :(得分:2)
使用数据库而不是文本文件可以大大受益。此外,您的问题显示基本缺乏Swing知识,但基本的CRUD(创建,读取,更新,删除)功能。
要回答您的问题,您可以使用textField1.setText(“”)清除文本字段;
我会读到使用数据库存储数据。它会让你的生活更轻松。