首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态更新Java组件

动态更新Java组件
EN

Stack Overflow用户
提问于 2014-12-24 01:23:39
回答 1查看 102关注 0票数 0

假设我有一个JEditorPane

我还有一个名为addText(字符串S)的空,它是这样的

代码语言:javascript
复制
public void addText(String s)
jeditorpane.setText(jeditorpane.getText() + s);
}

现在,我将有一个按钮,当按下时,读取文本文件的所有行,并使用缓冲的读取器将它们写入文本编辑器框,并逐行添加文本。

为什么当按下按钮时,应用程序会冻结几秒钟,然后立即发布所有内容。是他们的一种方式,所以你可以动态地看到每件事,并看到它被一个接一个地发布。这就是代码的编写方式.

我有一些来自StackOverFlow的消息来源,它们可能会帮助您:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-24 01:26:12

为什么当按下按钮时,应用程序会冻结几秒钟,然后立即发布所有内容。

您正在对Swing事件线程进行缓慢读取,捆绑线程并阻止它执行其任务,包括绘制到GUI和与用户交互。

是他们的一种方式,所以你看到所有的动态张贴和看到它是一个一个的张贴。这就是代码的编写方式。

是的,使用后台线程,最容易通过使用SwingWorker获得。读在Swing中并发

您可能希望使用一个通用的SwingWorker,特别是SwingWorker<Void, String>,并在读取每一行时使用它的发布/处理方法对将字符串推入到文本组件中。

编辑:我现在看到的链接,你在你的问题中已经提到了这个解决方案,这让我想知道你为什么问这个问题。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27630305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档