我有一个 Timer 用于扩展 JPanel 动画的类中,ActionListener 监听它并使 actionPerformed 运行,它会在需要时重新绘制并停止计时器。但是启动计时器的方法 animatePanel 在计时器运行时继续执行,这是我不想要的。我希望它等到计时器停止返回。
Timer 在类的构造函数中初始化,如下所示:
timer = new Timer(5, taskPerformer);
这就是它的作用。我有一个叫做 animatePanel() 的东西:
private ActionListener taskPerformer = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
...
if (some conditions){
...
timer.stop();
...
return;
}
...
}
};
private void animatePanel() {
...
timer.start();
System.out.println("Timer stopped."); //always executes before the timer has stopped :(
//then returns and lets the rest of my program run while the timer is still going, which is BAD
}
计时器工作正常,除了在某些情况下, animatePanel() 会过早返回并让我的程序的其余部分运行,从而导致问题。