2010-06-02 37 views
1

可能重複:
How do I fade an image in swing?JLabel的阿爾法值

我有一個JLabel,我想改變其不透明度(Alpha值),每一秒,我想類似的東西,但它的不改變每一秒,JLabel只能用最後一個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; 
    } 

回答

1

如果你運行這個在事件指派線程,使用說SwingUtilities.invokeLater再經過你的代碼執行完畢重繪纔會發生。對於反覆更新,使用Swing定時器,在這個太陽教程詳細介紹:

您也可能會考慮在Trident動畫庫搖擺。

+0

+1下面是一個使用'javax.swing.Timer'確保EDT執行的相關示例:http://stackoverflow.com/questions/2228735/how-do-i-fade-an-image-in-swing/2234020#2234020 – trashgod 2010-06-02 23:04:55