如何让 Swing Timer 对象每 2 秒触发一次,持续十次,并在每次触发时做不同的事情?使用:
// task one
int delay = 2000;
Timer swingTimer = new Timer(delay, new ActionListener() {
public void actionPerformed(ActionEvent e) {
// task two
}
});
swingTimer.start();
只能让我做两件事。但我想使用计时器执行一段代码,等待 2 秒,执行另一段代码,再等待 2 秒,做另一件事,依此类推,连续执行 10 个任务。谢谢。
最佳答案
在您的actionPerformed
方法中使用某种计数器来确定您要进行的周期....
private int cycle = 0;
//...
Timer swingTimer = new Timer(delay, new ActionListener() {
public void actionPerformed(ActionEvent e) {
switch (cycle) {
case 0:
// Task #1
break;
case 1:
// Task #2
break;
case 2:
// Task #3
break;
default:
// All done...
((Timer)e.getSource()).stop();
}
cycle++;
}
});
您可以在每个 actionPerformed
结束时设置一个新的非重复 Timer
,将其与下一个 ActionListener
/task 一起播种到被执行,但这很快就会变得困惑......
这是这个想法的基本概念。您可以为每个任务设计一个通用的 interface
,将它们添加到某种类型的 List
中,然后简单地使用 list.remove(0)
弹出List
的下一个并执行它。您将继续,直到 List
为空。
关于java - 如何使用 Java Swing 定时器在每次触发时做不同的事情?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24877069/