1

可能重复:
如何在摇摆中淡化图像?

我有 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;
    }
4

1 回答 1

1

如果你在 Event Dispatch Thread 上运行它,使用 saySwingUtilities.invokeLater那么重绘只会在你的代码完成执行后发生。对于重复更新,请使用 Swing Timer,如本 sun 教程中所述:

您还可以查看 Swing 的Trident动画库。

于 2010-06-02T22:37:22.757 回答