Я создаю программу, в которой пользователь нажимает кнопку JButton, цвет фона которой по умолчанию СИНИЙ.Каждый раз, когда пользователь нажимает кнопку JButton, фон случайным образом циклически перебирает массив цветов.Каждый раз, когда фон становится КРАСНЫМ, JLabel печатает инкрементный счетчик.Я могу заставить JButton циклически переключаться между массивами цветов.Когда появляется первый КРАСНЫЙ, счетчик увеличивается на 1. Но каждый раз, когда появляется КРАСНЫЙ, счетчик не увеличивается.Я не могу заставить счетчик продолжать увеличиваться после начального счета.Вот код для кнопки:
//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));
//default for counter to be used when RED is background
int counter = 0;
/**
* This only seems to cycle once
* Checks if background is RED, increments counter
* Changes output of JLabel lblRedCounter
*/
if (btnClickMe.getBackground() == Color.RED)
{
counter++;
lblRedCounter.setText("Red Counter: " + counter);
}
}
});
panel.add(btnClickMe);