假设我有一个JEditorPane。
我还有一个名为addText(字符串S)的空,它是这样的
public void addText(String s)
jeditorpane.setText(jeditorpane.getText() + s);
}现在,我将有一个按钮,当按下时,读取文本文件的所有行,并使用缓冲的读取器将它们写入文本编辑器框,并逐行添加文本。
为什么当按下按钮时,应用程序会冻结几秒钟,然后立即发布所有内容。是他们的一种方式,所以你可以动态地看到每件事,并看到它被一个接一个地发布。这就是代码的编写方式.
我有一些来自StackOverFlow的消息来源,它们可能会帮助您:
发布于 2014-12-24 01:26:12
为什么当按下按钮时,应用程序会冻结几秒钟,然后立即发布所有内容。
您正在对Swing事件线程进行缓慢读取,捆绑线程并阻止它执行其任务,包括绘制到GUI和与用户交互。
是他们的一种方式,所以你看到所有的动态张贴和看到它是一个一个的张贴。这就是代码的编写方式。
是的,使用后台线程,最容易通过使用SwingWorker获得。读在Swing中并发。
您可能希望使用一个通用的SwingWorker,特别是SwingWorker<Void, String>,并在读取每一行时使用它的发布/处理方法对将字符串推入到文本组件中。
编辑:我现在看到和的链接,你在你的问题中已经提到了这个解决方案,这让我想知道你为什么问这个问题。
https://stackoverflow.com/questions/27630305
复制相似问题