摆动计时器不工作(Java)
出于某种原因,即使我使用oracle网站上的确切代码示例作为Swing Timer,它也不会等待1秒。它只是跳转到JOptionPane,上面显示您的分数是等 这是我的一个学校项目的源代码。为什么这不起作用,在运行其余代码之前不等待1秒摆动计时器不工作(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
//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中的代码。