【问题标题】:Java TextArea updateJava 文本区域更新
【发布时间】:2013-11-25 12:36:54
【问题描述】:
for (do something in) {
TextArea.append("Text here");
//break for one second
}

我的问题是我怎样才能休息一秒钟并直接在 textarea 上显示而不是同时显示所有内容?

【问题讨论】:

    标签: java textarea awt updates


    【解决方案1】:

    暂停执行一秒可以用

    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) 更新它。

    【讨论】:

    • 我知道你可以使用它,但它仍然会同时显示所有内容
    • 那么我假设您在TextArea.append("Text here"); 中有一大段文字。在这种情况下,您需要手动将文本分成块并在每个循环中输出每个块。
    • 您需要让 JVM 控制 EDT,以便它可以更新 GUI。
    • 如果你把 append 放到一个 invokeLater() 中,有帮助吗?
    【解决方案2】:

    要中断一秒钟,你必须使用 Thread 类的 sleep(1000) 方法,而要实现多线程,你必须重写 run 方法并扩展 Thread 类

    【讨论】:

      【解决方案3】:

      如果您的 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);
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-28
        • 2011-03-10
        • 1970-01-01
        • 2021-12-22
        • 2011-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多