实时输出到jTextArea

实时输出到jTextArea,第1张

实时输出到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函数都不是线程安全的。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5430878.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存