Ну, а что вы ожидали?
label.setBackground(COLORS[index % (COLORS.length - 1)]);
Переменная индекса жестко закодирована в 0. и COLORS.length -1 по существу является константой.Поэтому каждый раз, когда вы щелкаете по своему заданию фона COLORS [0];
Если вы измените метод действия на следующий, вы получите результаты, которые вы ищете:
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource().equals(button)){
label.setBackground(COLORS[index % COLORS.length]);
index++;
}
}
Во-первых: оператор по модулю всегда будет возвращать значение от 0 до единицы меньше значения, переданного ему.Так что
index % COLORS.length
всегда будет возвращать значение от 0 до COLORS.length -1.
Второе: вы забыли увеличить индекс после каждого вызова.