Swing/DisableAnimatedGif の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/DisableAnimatedGif へ行く。
- Swing/DisableAnimatedGif の差分を削除
--- category: swing folder: DisableAnimatedGif title: JLabelに表示したAnimated Gifのアニメーションを停止する tags: [JLabel, Animation, AnimatedGif, ImageIcon] author: aterai pubdate: 2013-02-25T00:50:43+09:00 description: JLabelに表示したAnimated GIFのアニメーションを停止します。 image: https://lh6.googleusercontent.com/-pYT15pLG7KY/USoyuJzLxUI/AAAAAAAABfo/JgO7-MbsL5U/s800/DisableAnimatedGif.png --- * 概要 [#summary] `JLabel`に表示した`Animated GIF`のアニメーションを停止します。 #download(https://lh6.googleusercontent.com/-pYT15pLG7KY/USoyuJzLxUI/AAAAAAAABfo/JgO7-MbsL5U/s800/DisableAnimatedGif.png) * サンプルコード [#sourcecode] #code(link){{ 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); } }; }} * 解説 [#explanation] 上記のサンプルでは、`JLabel#isEnabled()`が`false`の場合は`setIcon()`メソッドで設定した`Animated Gif`のアニメーションを停止するなどのテストを行っています。 - `Default` -- デフォルトの`JLabel`では`JLabel#setEnabled(false);`としてもアニメーションは停止しない -- デフォルトの`JLabel`では`JLabel#setEnabled(false)`を設定してもアニメーションは停止しない - `Override imageUpdate(...)` -- `JLabel#imageUpdate(...)`の`infoflags`から`FRAMEBITS`フラグを落とすことでアニメーションを停止 -- `JLabel`がリサイズされると?コマが進んでしまう - `setDisabledIcon` -- 別途用意した静止画像を使って`JLabel#setDisabledIcon(...)`を設定 -- `GrayFilter.createDisabledImage(Image)`でアイコンをグレースケール化 * 参考リンク [#reference] - [http://duke.kenai.com/iconSized/index.html Duke Images: iconSized] - [https://docs.oracle.com/javase/jp/8/docs/api/java/awt/image/ImageObserver.html ImageObserver (Java Platform SE 8)] - [[ColorConvertOpで画像をグレースケールに変換>Swing/ColorConvertOp]] - [[Animated Gifからフレーム画像を抽出する>Swing/ExtractFramesFromAnimatedGif]] * コメント [#comment] #comment #comment