Java 更新的gui应用程序

Java 更新的gui应用程序,java,multithreading,swing,user-interface,timer,Java,Multithreading,Swing,User Interface,Timer,我需要编写一个应用程序,将检查的东西,每X时间,并更新到GUI comtols。 我对java知之甚少,以前编写过一些应用程序,但我从未处理过多线程和更新GUI之类的问题 我认为这将是一项简单的任务,所以我开始写我的软件。其他一切都很正常。我只是不能让应用程序每X次执行一次检查,然后更新GUI 有人能给我一些指导吗?我应该调查什么?通常的做法是什么? 是线吗?递归的?还有别的吗 另外,如果可能的话,给我提供一些代码示例,我可以更好地理解 谢谢你的努力 我假设你正在使用Swing。如果是的话,请使

我需要编写一个应用程序,将检查的东西,每X时间,并更新到GUI comtols。 我对java知之甚少,以前编写过一些应用程序,但我从未处理过多线程和更新GUI之类的问题

我认为这将是一项简单的任务,所以我开始写我的软件。其他一切都很正常。我只是不能让应用程序每X次执行一次检查,然后更新GUI

有人能给我一些指导吗?我应该调查什么?通常的做法是什么? 是线吗?递归的?还有别的吗

另外,如果可能的话,给我提供一些代码示例,我可以更好地理解


谢谢你的努力

我假设你正在使用Swing。如果是的话,请使用

或者,如果检查本身是一些不能在GUI线程中执行的长时间运行的任务(因为它会冻结它),则使用并将其提交给类创建的。

尝试以下操作:

private volatile boolean  killCheck;

public void startChecking()  {
    killCheck = false;
    Thread  checker = new Thread()  {
        public void run()  {
            for (;;)  {
                try { Thread.sleep( 500 ); }
                catch (InterruptedException ie)  { break; }
                if (killCheck)  break;
                EventQueue.invokeLater( new Runnable()  {
                    public void run()  {
                        // Update GUI here on EventQueue.
                    }
                } );
            }
        }
    };
    checker.start();
}

public void stopChecking()  { killCheck = true; }
计时器(至少有两个,在swing和util中)非常有趣和优雅,但有时你只需要完成工作。用你的“X时间”替换我的500。确保在EventQueue上进行Swing调用!如果抛出InterruptedException,可能会添加一条消息

去看看一个荡秋千的工人;它会做同样的事情,更安全,但如果你要做很多这件事,你可能会发现自己做这件事更有力量