java - 如何使用 Java Swing 定时器在每次触发时做不同的事情?

标签 java swing timer

如何让 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/

相关文章:

JavaScript 倒计时器代码 [JS]

objective-c - Objective-C : Remotely invalidate a timer

java - 图像在最小化窗口时丢失

java - 布局管理器不起作用

java - 如何防止在调度事件后将字符输入到 JTextField 中?

java - 为什么JPanel尺寸不对?

java - 在java中将SO_LINGER套接字选项设置为ServerSocket

java - Jmeter:了解吞吐量和 KB/秒之间的相关性

java - 方法调用的jvm缓存?

java - 如何每 10 秒记录一次我的程序