文本字段中的输出,可以在读取每一行时保持刷新

时间:2014-05-10 03:50:14

标签: java refresh jtextfield

我是Java的初学者,已经开始编写一个程序来读取文件中的文本,并希望将每行输出到JTextField

我想比较每一行数字,所以我需要一个字段,每行数据都会保持刷新。

我可以使用Visual Basic with loop,Me.refresh和system.thread.sleep来完成。但我需要用Java实现它。 我使用System.out.println(num);显示文件的所有行。

当我使用textArea.append(num + "\n");输出它时,我只在到达结尾后显示所有行。 textArea = new JTextArea("",10,30);

如果我使用dataRead.setText(num);输出它,我只会在到达结尾后显示最后一行。 dataRead = new JTextField(7);

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

你有一个Swing线程问题,通过尝试读取Swing事件线程中的文件,你最终会占用线程,冻结你的GUI,直到读完成。我建议您创建一个后台线程,例如SwingWorker提供的后台线程,用于在文件中读取,然后在每一行之后,将该行发布到JTextField,也许如果您愿意,可以调用Thread.sleep(...)在你的后台线程中。

另一种方法是一次性读取整个文件,再次在后台线程中读取,然后使用Swing Timer一次显示一行。