栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

实时输出到jTextArea

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

实时输出到jTextArea

问题是您需要异步执行计算。您应该创建一个执行计算的后台线程,然后使用SwingUtilities.invokeLater更新Jtextarea。

final ArrayList <String> mylinks = // ...(新线程(){    public void run(){        对于(String s:mylinks){ 尝试{    最终的String结果= linkChecker.checkFileStatus(s)+“  n”;    SwingUtilities.invokeLater(new Runnable(){          public void run(){    jtextarea2.append(result);         }     });  }捕获(IOException错误){     //处理错误  }        }    }})。开始();

编辑
已经指出,Jtextarea的append函数实际上是线程安全的(不同于大多数Swing函数)。因此,对于这种情况,不需要通过invokeLater更新它。但是,您仍然应该在后台线程中进行处理,以便允许GUI更新,因此代码为:

final ArrayList <String> mylinks = // ...(新线程(){    public void run(){        对于(String s:mylinks){ 尝试{    jtextarea2.append(linkChecker.checkFileStatus(s)+“  n”);  }捕获(IOException错误){     //处理错误  }        }    }})。开始();

但是,几乎所有其他修改Swing对象的操作都需要使用invokeLater(以确保修改发生在GUI线程中),因为几乎所有的Swing函数都不是线程安全的。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/455352.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号