摆动计时器不工作(Java)

摆动计时器不工作(Java),java,swing,timer,jframe,jpanel,Java,Swing,Timer,Jframe,Jpanel,出于某种原因,即使我使用oracle网站上的确切代码示例作为Swing Timer,它也不会等待1秒。它只是跳转到JOptionPane,上面显示您的分数是等 这是我的一个学校项目的源代码。为什么这不起作用,在运行其余代码之前不等待1秒 //Check to see if user has enetered anything if(!answered) { int delay = 1000; //milliseconds ActionListener taskPerformer

出于某种原因,即使我使用oracle网站上的确切代码示例作为Swing Timer,它也不会等待1秒。它只是跳转到JOptionPane,上面显示您的分数是等

这是我的一个学校项目的源代码。为什么这不起作用,在运行其余代码之前不等待1秒

//Check to see if user has enetered anything
if(!answered)
{
    int delay = 1000; //milliseconds
    ActionListener taskPerformer = new ActionListener() {
        public void actionPerformed(ActionEvent evt) {
            //...Perform a task...
        }
    };
    new Timer(delay, taskPerformer).start();
    afk = true;
    incorrect += 1;
    answered = true; //This breakes it out of the loop
}

计时器用于在特定时间后运行回调。如果只是想延迟,可以将延迟后要运行的代码移动到taskPerformer操作侦听器中


Thread.sleep1000在这里并不理想,因为它将导致UI完全冻结,因为您将使UI线程处于休眠状态。

在特定时间后,使用计时器运行回调。如果只是想延迟,可以将延迟后要运行的代码移动到taskPerformer操作侦听器中


Thread.sleep1000在这里并不理想,因为它会导致UI完全冻结,因为您会使UI线程处于休眠状态。

您已经发布了很多代码,其中很多代码与您的问题无关,这只是因为计时器不工作。我敦促您将代码缩减到最小的可编译和可运行程序,以演示您的问题,即一个。这将有助于您发现问题并解决问题,如果您不通过本练习解决问题,我们将有更容易理解和更正的代码。在计时器调用后,您的代码不会也不应该延迟。延迟的只是计时器ActionListener中的内容。好的,我做了,但你仍然没有澄清我的代码不起作用的原因。你没有做类似的事情-请重新阅读评论,因为你应该只发布可编译和可运行的代码-一个小的自包含程序,它演示了你的问题,其他什么都没有。再次,看来你的假设是无效的。您似乎认为,通过启动计时器,计时器之后的所有代码调用都将延迟到计时器完成,这根本不是真的。相反,计时器只会在需要时和经过一定延迟后重复调用其ActionListener中的代码。您发布了很多代码,其中大部分与您的问题无关,这只是因为计时器不工作。我敦促您将代码缩减到最小的可编译和可运行程序,以演示您的问题,即一个。这将有助于您发现问题并解决问题,如果您不通过本练习解决问题,我们将有更容易理解和更正的代码。在计时器调用后,您的代码不会也不应该延迟。延迟的只是计时器ActionListener中的内容。好的,我做了,但你仍然没有澄清我的代码不起作用的原因。你没有做类似的事情-请重新阅读评论,因为你应该只发布可编译和可运行的代码-一个小的自包含程序,它演示了你的问题,其他什么都没有。再次,看来你的假设是无效的。您似乎认为,通过启动计时器,计时器之后的所有代码调用都将延迟到计时器完成,这根本不是真的。相反,计时器只会在需要时和经过一定延迟后重复调用其ActionListener中的代码。