Здесь есть пара проблем.
Первое очевидное, что вы, похоже, используете изменяемую статику. Это действительно плохая идея и указывает (и вызывает!) Путаницу. В данном конкретном случае одной из проблем является то, что статический flasher
является общим.
Flash flash = new Flash(); //set up timer
tmr = new javax.swing.Timer(1000, new Flash());
tmr.addActionListener(flash);
Мы добавляем два Flash
действия. Обычно это было бы плохо, но просто выявляет необнаружимую «ошибку». Цвет будет установлен дважды.
Соберите эти две вещи вместе, и у нас есть два действия без перерыва, которые выполняют одно и то же переключение. Два переключателя. Состояние не изменяется (хотя есть перерисовки, события изменения свойств и т. Д.).
Так что не используйте изменяемую статику и держите код в чистоте.