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

时间:2014-05-12 11:55:06

标签: java text-files jtextfield printstream

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

  public void outputFile() throws FileNotFoundException{

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

  }

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

例如,如果我写了#34; abc"在我的JTextField中点击" OK"按钮,然后当我使用我的JTextField回到我的面板时 - 我的JTextField必须留在" abc"并且没有被重置(因此是空的),并且解决方案是从JTextField中读取文件(但只有一行,因为有许多JTextField)。

3 个答案:

答案 0 :(得分:0)

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

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

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

希望这有帮助。

答案 1 :(得分:0)

如果您希望文本不被重置,那么您需要保持一个"结构"它保存您从Panel中读取的值。 因此,当您为JtextField设置文本时,您需要将此值赋予" Structure"或者"全局变量"这样它就能保持价值。

您可以执行以下操作:

  1. 定义一个包含值的结构。
  2. 在面板上按下下一步时设置这些值
  3. 返回面板时,默认情况下填充结构中的值,然后为用户提供编辑值或从文件中读取的选项。
  4. 最后写出值时,请从结构本身读取它们。

答案 2 :(得分:0)

请勿使用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文本方法调用我的头顶但它应该类似于设置字段的文本