Java TextArea更新

时间:2013-11-25 12:36:55

标签: java textarea awt updates

for (do something in) {
TextArea.append("Text here");
//break for one second
}

我的问题是我怎么能在一秒内打破它并直接在textarea上显示而不是同时显示所有内容?

3 个答案:

答案 0 :(得分:0)

暂停执行一秒钟可以用

完成
Thread.sleep(1000);

但你应该抓住可能的InterruptedException

try
{
  Thread.sleep(1000);
}
catch(InterruptedException e)
{
 System.out.println(e.getMessage());
}

您还应该通过

更改GUI组件
 EventQueue.invokeLater(new Runnable(){
  public void run()
  { 
    //make gui change here
  }
 });

从AWT GUI事件调度线程(EDT)更新它。

答案 1 :(得分:0)

对于break只需一秒钟,你必须使用Thread类的sleep(1000)方法,并且为了实现多线程,你必须覆盖run方法并扩展Thread类

答案 2 :(得分:0)

如果你的TextArea.append调用没有在swing线程中发生,它可能会一次显示。下面的块请求swing线程执行runnable中阻止当前线程的代码,直到它完成。然后我们进行1秒钟的睡眠

    final JTextArea someArea = new JTextArea();

    try {
        SwingUtilities.invokeAndWait(new Runnable() {

            public void run() {
                someArea.append("Some text");
            }
        });
    } catch (InterruptedException ex) {
        Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
    } catch (InvocationTargetException ex) {
        Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
    }
    try {
        Thread.sleep(1000);
    } catch (InterruptedException ex) {
        Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
    }