SwingUtilities.invokeLater()

发布于 2024-09-08 09:13:36 字数 73 浏览 6 评论 0原文

我如何感受到 SwingUtilities.invokeLater() 在任何 swing 应用程序中的重要性。请给出一些代码示例。

How do I feel the essentialness of SwingUtilities.invokeLater() in any swing application.Please give some code example.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

甜是你 2024-09-15 09:13:36

每当您需要更新 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!"));
     }
   }
 }

Whenever you need to update something inside your GUI you should do it through the AWT Event Thread.

This because AWT (and Swing on top) has its own thread that manages everything of a GUI. Without it the graphical interface couldn't handle events and similar things in an asynchronous way while your program is doing something else.

So for example if you have a long task declared in a 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!"));
     }
   }
 }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文