我想将一个字符实时添加到文本区域。
我有一个名为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只是累积而不是在过程完成之前更新。
答案 0 :(得分:2)
我尝试了Thread.sleep和Thread.yeild。
在EDT上执行代码时,切勿使用Thread.sleep()。
似乎jTextArea只是在流程完成之前累积而不是更新。
是。你阻止EDT重画。阅读Concurrency上的Swing教程中的部分,以获得更详细的解释和使用Swing Worker的简单解决方案。