如何使用Java Swing计时器在每次启动时执行不同的操作?

如何使用Java Swing计时器在每次启动时执行不同的操作?,java,swing,timer,Java,Swing,Timer,如何让Swing Timer对象每2秒发射10次,并在每次发射中执行不同的操作?使用: // task one int delay = 2000; Timer swingTimer = new Timer(delay, new ActionListener() { public void actionPerformed(ActionEvent e) { // task two } }); swingTimer.start(); 我只能做两件事。但是我想

如何让Swing Timer对象每2秒发射10次,并在每次发射中执行不同的操作?使用:

// task one

int delay = 2000;

Timer swingTimer = new Timer(delay, new ActionListener() {
    public void actionPerformed(ActionEvent e) { 

         // task two
    }
});
swingTimer.start();

我只能做两件事。但是我想用定时器来执行一段代码,等2秒,再执行另一段代码,再等2秒,再做另一件事,以此类推,完成10个连续的任务。谢谢。

在您的
操作执行方法中使用某种计数器来确定您的操作执行到哪个周期。

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++;
    }
});
您可以在每个执行的
操作结束时设置一个新的非重复
计时器
,将其与下一个要执行的
操作侦听器
/任务一起播种,但这可能会很快变得混乱


这是这个想法的基本概念。您可以为每个任务设计一个通用的
界面
,将它们添加到某种类型的
列表
,然后简单地使用
列表。删除(0)
以弹出下一个
列表
并执行它。您将继续操作,直到
列表
为空。

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++;
    }
});
private int cycle;

Timer swingTimer = new Timer(delay, new ActionListener() {
    public void actionPerformed(ActionEvent e) { 
        controller.callMethod(cycle); // controller decides what to do
        cycle++;   
    }
});
您可以在每个执行的
操作结束时设置一个新的非重复
计时器
,将其与下一个要执行的
操作侦听器
/任务一起播种,但这可能会很快变得混乱

这是这个想法的基本概念。您可以为每个任务设计一个通用的
界面
,将它们添加到某种类型的
列表
,然后简单地使用
列表。删除(0)
以弹出下一个
列表
并执行它。您将继续,直到
列表
为空

private int cycle;

Timer swingTimer = new Timer(delay, new ActionListener() {
    public void actionPerformed(ActionEvent e) { 
        controller.callMethod(cycle); // controller decides what to do
        cycle++;   
    }
});
并且不要忘记在计时器完成所需的周期数后停止计时器


在计时器完成所需的循环次数后,不要忘记停止计时器。

ALLAH RAZI OLSUN。安拉·图图古努·阿尔廷·埃斯丁·阿拉赫·拉齐·奥尔桑。安拉·图图古努·阿尔廷·埃斯丁。