【问题标题】:How can I increment a variable on button click?如何在按钮单击时增加变量?
【发布时间】:2014-04-01 11:58:36
【问题描述】:

我正在尝试为学校制作一个类似小游戏的东西。它旨在帮助您学习时间表。我想要的是表格的乘数每次都是随机的(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();

【问题讨论】:

  • 我没有看到按钮...
  • @feuerball 我没有在帖子中放置按钮声明。如果你愿意,我可以..
  • 你不需要看,点击按钮时会调用动作监听器。
  • 我什至没有看到ActionListener...
  • @feuerball actionlistener 在另一个类中。按钮响应。那不是我的问题...

标签: java arrays swing jbutton increment


【解决方案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);
     }
}

【讨论】:

    【解决方案2】:

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

    玩得开心编码,但这些作业是为了让你摸摸头,试着写一些代码,如果它坏了,请告诉我们,而不是要求一般的答案。

    【讨论】:

    • 我在这里很愚蠢-索引是什么意思?
    • 没问题,问没有错 :) 索引是您访问数组中元素的方式,所以这里的 'array[3]' 3 是索引,这将返回第 4 个元素数组,因为数组从索引 0 开始。
    • 我认为可能是这样。谢谢。
    • 好吧,我一直在思考这个问题。首先如何获取索引?
    • 这取决于您是如何实现的,当您发现时,将其作为参数传递.. 或者哪个最适合您的操作方式。
    猜你喜欢
    • 2019-08-03
    • 2019-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-27
    • 1970-01-01
    相关资源
    最近更新 更多