Java 从文本文件中读取一行并将其放入JTextField中

Java 从文本文件中读取一行并将其放入JTextField中,java,text-files,jtextfield,printstream,Java,Text Files,Jtextfield,Printstream,我不知道如何从文本文件中读取一行并将其放入JTextField。到目前为止,我已经创建了一个文本文件,并且能够通过更改JTextFields来更改其中的文本。例如: public void outputFile() throws FileNotFoundException{ PrintStream output = new PrintStream(new FileOutputStream("test")); output.println(jtextfield1.getTex

我不知道如何从文本文件中读取一行并将其放入JTextField。到目前为止,我已经创建了一个文本文件,并且能够通过更改JTextFields来更改其中的文本。例如:

  public void outputFile() throws FileNotFoundException{

    PrintStream output = new PrintStream(new FileOutputStream("test"));
    output.println(jtextfield1.getText());

  }
我在单击按钮时运行此方法。它工作正常,文本文件确实正在更改。问题是我想将这个新更改的文本读取到我的JTextField,原因是我在这个程序的面板之间更改时使用了removeAll()方法,因此当再次返回这个面板时,我的JTextField将被设置为默认值(空)


例如,如果我在我的JTextField中写了“abc”并单击了“OK”按钮,那么当带着我的JTextField返回我的面板时,我的JTextField必须保持在“abc”并且不被重置(因此是空的),解决方案是从文件中读取(但只读取一行,因为有许多JTextField)在到JTextField中。

您可以使用Scanner类逐行读取文件,您可以有如下内容:

Scanner s = new Scanner(new File("test"));

if(s.hasNextLine()){
    jtextfield1.setText(s.nextLine());
}

希望这能有所帮助。

如果您不希望文本被重置,那么您需要保留一个“结构”,它保存您从面板读取的值。 因此,当您为JtextField设置文本时,需要将该值赋予该“结构”或“全局变量”,以便它保留该值

您可以执行以下操作:

  • 定义一个保存值的结构
  • 在面板上按“下一步”时设置这些值
  • 返回面板时,默认情况下从结构中填充值,然后为用户提供编辑值或从文件读取的选项
  • 最后写入值时,请从结构本身读取它们

  • 不要使用removeAll只删除需要删除的内容

    或者,您可以创建一个临时变量,该变量在清除所有之前存储框中的内容,然后在将其设置为该临时值之后立即存储框中的内容

    String temp = textfield1.getText(); //Creates temporary string to hold the data in the text field
    removeAll(); // your remove all call
    textfield1.setText(temp); // sets the text to the temp variable you created earlier
    

    这可能不准确,因为我不知道头顶上的st text方法调用,但它应该类似于设置字段的文本

    返回面板是什么意思?您是否使用JOptionPane读取要附加到文件的值?我使用的是BorderLayout。我不知道我是否告诉了你们错误的信息。当我按下北面板上的按钮时,我的中央面板正在改变。因此,当我在“菜单”之间切换时,我的JTextFields将从中心面板中删除并添加到中心面板中。谢谢回复。我不知道你是否可以给我举个例子,以便我能正确地理解它?我可以给你举个例子,但最好你自己试试。只要想一个解决方案,并在这里提供。这样,我将能够帮助你做得更多,因为你应该为此付出努力。我可以按照某人的建议使用一个全局变量,这是有效的。但后来我意识到我必须使用文本文件,因为我必须根据从JComboBox中选择的索引获取不同的值。我不知道如何从文件中插入JTextField。创建文件-我使用PrintStream尝试过,效果很好。到目前为止,我唯一的问题是将文本从文件中获取到JTextField。谢谢您的回复。我正在使用GUI。我还可以用扫描仪吗?是的,你可以,为什么不呢?我必须用removeAll,因为北方按钮在中央面板上显示的东西非常不同。如何使用临时变量?你能举个例子吗?在这方面我有点生疏。String temp=textfield1.getText()removeAll()textfield1.setText(temp)removeAll()是什么;?它是从我的面板中的removeAll()方法执行的命令吗?如果它是center,那么:center.removeAll()??很抱歉,我对这个评论有格式问题。我将把这个例子添加到我的答案中