我正在制作一个程序,用户在其中单击具有默认背景颜色 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)); } } });
1 回答
慕斯709654
TA贡献1840条经验 获得超5个赞
您需要将 int 变量移到 actionPerfomed 方法之外,并使其成为实例变量(或静态变量,但通常不推荐)。现在,每次调用 actionPerformed 时,您都会用 0 初始化一个新变量。
添加回答
举报
0/150
提交
取消