2010-06-02 16 views
1

Possible en double:
How do I fade an image in swing?JLabel avec une valeur alpha

j'ai JLabel et je veux changer son opacité (valeur alpha) chacun une seconde, je l'ai essayé quelque chose comme ça, mais son ne change pas chaque seconde, JLabel ne modifie son opacité qu'avec la dernière valeur alpha.

Color color = jLabel1.getBackground(); 
    int alpha = 255; 
    long initTime = System.currentTimeMillis(); 
    while(true){ 
     if(System.currentTimeMillis() - initTime >= 1000){ 
     initTime = System.currentTimeMillis(); 
     alpha -=1; 
     Color color2 = new Color(color.getRed(),color.getGreen(),color.getBlue(),alpha); 
     jLabel1.setBackground(color2); 

     } 
     if(alpha<=0) 
      break; 
    } 

Répondre

1

Si vous utilisez ce sur le thread de répartition des événements, en utilisant SwingUtilities.invokeLater dire alors le repeindre ne se produira après votre code a terminé son exécution. Pour les mises à jour répétées, utilisez la minuterie Swing, comme détaillé dans ce tutoriel soleil:

Vous pourriez aussi chercher dans la bibliothèque d'animation Trident pour Swing.

+0

+1 Voici un exemple connexe qui utilise 'javax.swing.Timer' pour assurer l'exécution d'EDT: http://stackoverflow.com/questions/2228735/how-do-i-fade-an-image-in-swing/2234020 # 2234020 – trashgod