Здесь есть одна очевидная проблема:
@Override
public void actionPerformed(ActionEvent e) {
int[] array = new int[counter];
for (int x = 0; x < counter; x++) {
array[x] = (int)(Math.random() * 16);
button[array[x]].setBackground(lightRed);
timer.start();
//Delay of 500
timer.stop(); // **** here ****
button[array[x]].setBackground(Color.black);
}
}
вы звоните timer.stop()
сразу после вызова timer.start()
и не даете таймеру шанс. Возможно, вы захотите остановить Timer из его собственного ActionListener, когда он закончит свою работу.
Кроме того, он не компилируется:
timer = new Timer(delay, action);
Нет переменной с именем action
в любом месте в опубликованном коде, за исключением этого вызова метода, и это должно привести к ошибке Cannot Find Symbol.
Таким образом, решение может быть:
timer.addActionListener(timerDelay, new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (someCondition) {
// do Timer's business repeating until condition is false
} else {
// condition now false
((Timer) e.getSource()).stop(); // stop the Timer
}
}
});
Обратите внимание, что в пределах Если блок, вы можете увеличить значение переменной счетчика, равное 0 непосредственно перед запуском таймера, а затем проверить состояние этой переменной в someCondition
. Таким образом, при желании вы можете повторить действие 5 раз.