如何在其actionPerformed方法中停止Swing计时器? 我可以在actionPerformed方法之外启动和停止计时器但不能在方法中如何实现此目的?
final int i =0;
final Timer timer = new Timer(10, new ActionListener() {
int i = 0;
public void actionPerformed(ActionEvent evt) {
i++;
System.out.println(i);
if(i == 100) {
timer.stop();
}
}
});
timer.start();
答案 0 :(得分:3)
从动作方法中停止摆动计时器工作正常。我认为您的代码存在的问题是,它甚至无法编译,因为您在分配之前访问了timer
变量。
将作业分成两部分,如下所示,它将编译并正常工作。
final Timer timer = new Timer(10, null);
timer.addActionListener(new ActionListener() {
...
});
答案 1 :(得分:2)
将计时器声明为类成员。此外,您可能还希望将int i
声明为类成员,因为在计时器内创建一个新成员是没有意义的,如果您尝试每次重复递增它。请参阅我的代码更正
Timer timer = null;
int i = 0;
public Constructor() {
timer = new Timer(10, new ActionListener() {
public void actionPerformed(ActionEvent evt) {
i++;
System.out.println(i);
if(i == 100) {
timer.stop();
}
}
});
timer.start();
}
答案 2 :(得分:1)
您可以从ActionEvent获取Timer:
Timer timer = (Timer)evt.getSource();