1

重複の可能性:
Swing で画像をフェードするにはどうすればよいですか?

私はjLabelを持っていて、その不透明度(アルファ値)を1秒ごとに変更したいのですが、そのようなことを試みましたが、1秒ごとに変更しません.JLabelは最後のアルファ値でのみ不透明度を変更します.

  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 で実行している場合、say を使用するとSwingUtilities.invokeLater、コードの実行が終了した後にのみ再描画が行われます。更新を繰り返すには、この太陽のチュートリアルで説明されているように、Swing Timer を使用します。

また、Swing のTridentアニメーション ライブラリを調べることもできます。

于 2010-06-02T22:37:22.757 に答える