在多个动作事件之间进行选择

问题描述

所以我们只说我有3个不同的ActionEvent,而类ExecuteAction应该使用给定的整数action执行这些事件之一。 Int action可以是随机生成的,也可以通过文本字段给出,并且所有actionEvent应共享同一计时器actionTimer

这是我认为它如何工作的一个小概念(这不是正确的代码,只是一个想法)。

public class ExecuteAction implements ActionListener{

private int action;
private Timer actionTimer = new Timer (delay,this);

   public ExecuteAction(){
       actionTimer.start();
       actionChooser(action);
      }

    private void actionChooser(int action){
         switch(action){
                case 1: //perform ActionEvent1 
                       break;
                case 2: //perform ActionEvent2
                       break;
                case 3: //perform ActionEvent3
                        break;
                   }
                }
}

不幸的是,我不知道如何使用ActionListener处理它,这基本上就是我对这个概念的想法的终点。我希望您能帮助我完成这个概念。

注意:我不想使用任何按钮,只需数字即可确定将要执行的actionEvent。

解决方法

只需在代码内使用核心Java伪随机数生成器java.util.Random,就可以执行随机操作。如果将其放在标准的ActionListener中,则可以从Swing Timer中调用它。例如:

// imports

public class TimerFoo {
    private static final int TIMER_DELAY = 20; // or whatever delay desired
    private static final int MAX_CHOICE = 3;
    private ActionListener timerListener = new TimerListener();
    private Timer actionTimer;
    private Random random = new Random(); // import java.util.Random to use

    public ExecuteAction() {
        actionTimer = new Timer(TIMER_DELAY,() -> {
            int randomChoice = random.nextInt(MAX_CHOICE);
            switch (randomChoice) {
                case 0:
                    // do code for 0;
                    return;
                case 1:
                    // do code for 1;
                    return;
                case 2:
                    // do code for 2;
                    return;
                // don't need a default                 
            }
        });
    }

    public void start() {
        actionTimer.start();
    }
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...