SwingUtilities.invokeLater()

时间:2010-07-02 00:53:20

标签: java swing swingworker

我如何在任何swing应用程序中感受SwingUtilities.invokeLater()的基本功能。请给出一些代码示例。

1 个答案:

答案 0 :(得分:5)

每当您需要更新GUI中的内容时,您应该通过 AWT事件线程来完成。

这是因为AWT(和Swing在顶部)有自己的线程来管理GUI的所有内容。没有它,当你的程序正在做其他事情时,图形界面无法以异步方式处理事件和类似的事情。

例如,如果您在Thread中声明了一个长任务:

public void MyThread extends Thread
{
  class GUIUpdate implements Runnable
  {
    GUIUpdate(String msg)
    {
      ...
    }

    public void run()
    {
      guiElement.appendText(msg);
    }
  }

  public void run()
  {
     while (finished)
     {
        //do long calculations

        //send partial output to gui
        SwingUtilities.invokeLater(new GUIUpdate("something has changed!"));
     }
   }
 }