如何在按钮点击时增加变量?

时间:2014-04-01 11:58:37

标签: java arrays swing jbutton increment

我试图像学校一样制作小游戏。它旨在帮助您了解您的时间表。我想要的是每次表的乘数(5x8然后5x3然后5x9等)。

我已经使用数组生成了控制数字,如下所示

public static Integer[] generateNumbers()
{
    Integer[] arr = new Integer[12];

    for(int j = 0; j < arr.length; j++)
    {
        arr[j] = j+1;
    }
    Collections.shuffle(Arrays.asList(arr));
    System.out.println(Arrays.asList(arr));
    return arr;
}

我怎样才能使每次用户点击按钮时,选择数组中的下一个数字,记住按钮是在另一个类中声明的,ActionListener也在其他地方声明?

哦,数组在类范围内可用,因为函数声明如下:

public static Integer[] arr = generateNumbers();

2 个答案:

答案 0 :(得分:1)

主题答案

public class UnicornFrame extends JFrame {

     private Integer[] poneyArr = MyClassThatGeneratesNumbers.generateNumbers();
     private int poneyCounter = 0;
     private JButton poneyButton;

     public void poneyInit() {
         System.out.println("Unicorns are poney magical friends!");
         poneyButton = new JButton("OMG! Ponies!");
         // Java 8 Lambdas! Yey!
         poneyButton.addActionListener(e -> { 
             if (poneyCounter >= poneyArr.length) {
                  poneyArray = MyClassThatGeneratesNumbers.generateNumbers();
                  poneyCounter = 0;      
             }         
             Integer selected = poneyArr[poneyCounter++];   
             System.out.println("OMG! I have selected " + selected);
         });

         // other stuff

         add(poneyButton, BorderLayout.CENTER);
     }
}

答案 1 :(得分:0)

不需要单独的类中的按钮,动作监听器将在单击时与您的数组通信,我看到的最简单的方法是将一个公共方法放入数组的类中,它接受一个索引,然后递增索引,并返回存储在其中的元素。

有趣的编码,但这些作业是为了让你挠头,尝试编写一些代码,让我们知道它是否中断,而不是要求一般的答案。