jTextArea直到循环结束才更新

时间:2011-06-24 15:57:03

标签: java jtextarea updating

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

我有一个名为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只是累积而不是在过程完成之前更新。

1 个答案:

答案 0 :(得分:2)

  

我尝试了Thread.sleep和Thread.yeild。

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

  

似乎jTextArea只是在流程完成之前累积而不是更新。

是。你阻止EDT重画。阅读Concurrency上的Swing教程中的部分,以获得更详细的解释和使用Swing Worker的简单解决方案。