-1

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

  public void outputFile() throws FileNotFoundException{

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

  }

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

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

4

3 回答 3

0

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

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

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

希望这可以帮助。

于 2014-05-12T11:59:17.353 回答
0

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

您可以执行以下操作:

  1. 定义一个保存值的结构。
  2. 在面板上按下一步时设置这些值
  3. 返回面板时,默认填充结构中的值,然后让用户选择编辑值或从文件中读取。
  4. 当最终写入值时,从结构本身读取它们。
于 2014-05-12T12:09:56.027 回答
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 text 方法调用了我的头,但它应该类似于设置字段的文本

于 2014-05-12T12:23:13.867 回答