我有一个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
对象。是否可以?还是我只需要限制淡入淡出步骤的数量以提高效率?