概要

JLabelに表示したAnimated GIFのアニメーションを停止します。

サンプルコード

JLabel label2 = new JLabel() {
  @Override public boolean imageUpdate(Image img, int infoflags, int x, int y, int w, int h) {
    if (!isEnabled()) {
      infoflags &= ~FRAMEBITS;
    }
    return super.imageUpdate(img, infoflags, x, y, w, h);
  }
};
view all

解説

上記のサンプルでは、JLabelEnabledでない場合にアニメーションを停止するよう設定しています。

  • Default
    • デフォルトのJLabelでは、JLabel#setEnabled(false);としてもアニメーションは停止しない
  • Override imageUpdate(...)
    • JLabel#imageUpdate(...)infoflagsからFRAMEBITSフラグを落とすことでアニメーションを停止
    • JLabelがリサイズされると?、コマが進んでしまう
  • setDisabledIcon
    • 別途用意した静止画像を使って、JLabel#setDisabledIcon(...)を設定
    • GrayFilter.createDisabledImage(Image)でアイコンをグレースケール化

参考リンク

コメント