首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java setText in循环

java setText in循环
EN

Stack Overflow用户
提问于 2011-06-09 02:00:38
回答 2查看 2.1K关注 0票数 1

嗨,我试图在循环中setText到JTextArea,但我想这样做,在每个循环中的每一行都将在frame中看到。

我已经尝试了Thread.sleep(500),因为我认为循环太快了,不能设置每一行,但它没有帮助。

有可能吗??去做这件事?我想这样做是为了向用户显示从数据库下载文件的进度。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-09 02:34:42

基于事件的单线程guis的本质使得更改仅在事件完全处理后才可见(从事件处理程序返回)

阻塞事件分派线程不会有任何帮助(甚至会使整个应用程序无响应)

您应该使用计时器来模拟一次加一,其间有一个延迟

代码语言:javascript
复制
final String[] lines;
for(int i=0; i<10; i++){
    Timer t = new Timer(500*i,new ActionListener(){
        int ind=i;
        void actionPerformed(ActionEvent e){
            area.setText(area.getText() + "\n ..."); 
        }
    });
    t.start();
}

这将创建10个计时器,每个计时器在一段时间后添加一行(增量为500)

有一种更好的方法可以做到这一点,那就是重用计时器,并在完成所有操作后停止计时器,但它有点冗长

票数 2
EN

Stack Overflow用户

发布于 2011-06-09 02:04:51

我认为JTextArea.append(text)可能更有用。

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

https://stackoverflow.com/questions/6283166

复制
相关文章

相似问题

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