Quelque chose le long de ces lignes:
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
}
Remarque, vous devrez peut-être faire quelques vérifications pour vous assurer rouge vert et bleu ne dépassent pas 255, mais je ne suis pas encore sûr.
(cette fonction doit appartenir à la composante dont la couleur vous changez, vous devez appeler cela sur chaque tick timer)
hadn Vous n'avez pas encore entendu parler de [JLayer] (http://docs.oracle.com/javase/tutorial/uiswing/misc/jlayer.html)? :-) –
@nIcEcOw Comme OP prévoit d'aller avec votre suggestion (lire de son commentaire sur une réponse), il est bon de l'afficher comme réponse :-) – COD3BOY
@Sanjay: Suis-je supposé écrire un seul mot? J'aurais pu donner cela comme une réponse, bien que @@ PerryMonschau, dans sa réponse avait fait un travail acharné, et une réponse d'un mot est ce que mon conscient ne me permet pas. Donc, je suis confus :(mais celui qui peut fournir un exemple aussi, sur les lignes données peut certainement afficher cela comme une réponse –