我有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;
}
答案 0 :(得分:1)
如果你在Event Dispatch Thread上运行它,使用说SwingUtilities.invokeLater
,那么重绘只会在代码完成执行后发生。如需重复更新,请使用Swing Timer,详见本太阳教程:
您也可以查看Trident动画库中的Swing。