Something along these lines:
Color before = new Color(255,0,0);
Color after = new Color(0,0,0);
Color current = before;
int maxtime = 1000;
int step = 0;
public void step()
{
if(step == maxtime)
return;
step++;
double percentComplete = step/maxtime;
double percentGone = 1-percentComplete;
int red = (int)(before.getRed()*percentGone+after.getRed()*percentComplete);
int green = (int)(before.getGreen()*percentGone+after.getGreen()*percentComplete);
int blue = (int)(before.getBlue()*percentGone+after.getBlue()*percentComplete);
int alpha = (int)(before.getAlpha()*percentGone+after.getAlpha()*percentComplete);
current = new Color(red, green, blue, alpha);
//set component's color to current
}
Note, you may need to do some checks to make sure red green and blue don't exceed 255, but I'm not yet sure.
(this function should belong to the component whose color you're changing, you should call this on each timer tick)