0

我想实时将一个字符附加到文本区域。

我有一个名为 br 的缓冲阅读器,它正在向文本区域读取一个很长的过程。

        cmd=ArrayOfCommandsWhichWorkProperly

        Runtime run = Runtime.getRuntime() ;
        pr = run.exec( cmd );
        BufferedReader buf = new BufferedReader( new InputStreamReader(pr.getInputStream() ) ) ;

        while ( (c=br.read()) >-1 )  {
            String s=Character.toString((char)br.read()); 
            //Why is this text box not updating?
            jTextArea2.append(s);

        }        

看来一定是有一个加速器在路上什么的......问题是它在整个过程完成之前不会更新。我可以添加什么来更新文本框?

我试过 Thread.sleep 和 Thread.yeild。似乎 jTextArea 只是在累积而不是更新,直到该过程完成。

4

1 回答 1

2

我试过 Thread.sleep 和 Thread.yeild。

在 EDT 上执行代码时,切勿使用 Thread.sleep()。

似乎 jTextArea 只是在累积而不是更新,直到该过程完成。

是的。您正在阻止 EDT 重新绘制。阅读 Swing并发教程中的部分,以获得更详细的解释和使用 Swing Worker 的简单解决方案。

于 2011-06-24T16:02:59.523 回答