У меня есть JButton
, который при нажатии меняет цвет фона с активного на обычный:
final Color activeButtonColor = new Color(159, 188, 191);
final Color normalButtonColor = new Color(47, 55, 56);
Я хочу, чтобы цвет активной кнопки вернулся к нормальному цвету кнопки, когда конкретное задание будет завершено. Я использую SwingWorker
и хотел бы знать, если кто-нибудь может предложить эффективный способ сделать это, пожалуйста?
button.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent event) {
new SwingWorker<Object, Object>() {
protected Object doInBackground() throws Exception {
button.setBackground(activeButtonColor);
for (int note = 60; note < 120; note++) {
midiController.sendMidiMessage(1, note, 83);
midiController.stopMidiMessage(note, 83);
}
Thread.sleep(200);
return null;
}
protected void done() {
try {
Object result = get();
// Fade back
} catch (Exception ex) {
ex.printStackTrace();
if (ex instanceof java.lang.InterruptedException)
return;
}
}
}.execute();
}
});
РЕДАКТИРОВАТЬ: Просто чтобы прояснить, я ищу эффективный способ постепенного уменьшения значений RGB для activeButtonColor
обратно до normalButtonColor
, без необходимости создавать огромное количество Color
объекты. Является ли это возможным? Или мне просто нужно ограничить количество шагов затухания, чтобы быть более эффективными?