单击 JButton 时出现特定颜色时的 JAVA 增量计数器

我正在制作一个程序,用户在其中单击具有默认背景颜色 BLUE 的 JButton。每次用户单击 JButton 时,背景都会在颜色数组中随机循环。每次背景为红色时,JLabel 都会打印出一个递增计数器。我可以让 JButton 在颜色数组中随机循环。当第一个 RED 出现时,计数器增加 1。但每次出现 RED 后,计数器都不会增加。我无法让计数器在初始计数后继续递增。这是按钮的代码:


        //label for counter

        JLabel lblRedCounter = new JLabel("Red Counter: 00");

        lblRedCounter.setBorder(new EmptyBorder(31, 3, 31, 3));

        lblRedCounter.setFont(new Font("Tahoma", Font.PLAIN, 30));

        lblRedCounter.setOpaque(true);

        lblRedCounter.setBackground(Color.LIGHT_GRAY);

        panel.add(lblRedCounter);


        //button to change background and initiate counter

        JButton btnClickMe = new JButton("Click Me");

        btnClickMe.setFocusable(false);

        btnClickMe.setBorder(new EmptyBorder(33, 47, 33, 47));

        btnClickMe.setFont(new Font("Tahoma", Font.PLAIN, 30));

        btnClickMe.setBackground(Color.BLUE);

        btnClickMe.setForeground(Color.WHITE);

        btnClickMe.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent arg0) 

            {               

                //create arraylist of colors

                colors = new ArrayList<>();

                colors.add(Color.BLUE);

                colors.add(Color.RED);

                colors.add(Color.GREEN);

                colors.add(Color.ORANGE);

                colors.add(Color.MAGENTA);


                //creates random object

                Random rand = new Random();

                //random object cycles through 5 places to match array length

                int num = rand.nextInt(5);


                //cycles randomly through array of colors

                btnClickMe.setBackground(colors.get(num));

                }

            }

        });


小唯快跑啊
浏览 119回答 1
1回答

慕斯709654

您需要将 int 变量移到 actionPerfomed 方法之外,并使其成为实例变量(或静态变量,但通常不推荐)。现在,每次调用 actionPerformed 时,您都会用 0 初始化一个新变量。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java