Swing/RestartAnimatedGif のバックアップの現在との差分(No.7)
- category: swing folder: RestartAnimatedGif title: ImageIconのリソースを開放してAnimatedGifを最初から再生する tags: [ImageIcon, Animation, JButton, JLabel] tags: [ImageIcon, Animation, AnimatedGif, JButton, JLabel] author: aterai pubdate: 2013-08-19T00:06:01+09:00 description: JButtonなどのコンポーネントに設定したAnimatedGifのリソースを一旦解放して最初から再生します。 image:
概要
JButton
などのコンポーネントに設定したAnimatedGif
のリソースを一旦解放して最初から再生します。java - Animated ImageIcon as Button - Stack Overflowを参考にしています。
Screenshot
Advertisement
サンプルコード
#spandel
final ImageIcon animatedIcon = new ImageIcon(url);
#spanend
#spanadd
ImageIcon animatedIcon = new ImageIcon(url);
#spanend
JButton button = new JButton(icon9) {
@Override protected void fireStateChanged() {
ButtonModel m = getModel();
if (isRolloverEnabled() && m.isRollover()) {
animatedIcon.getImage().flush();
}
super.fireStateChanged();
};
};
View in GitHub: Java, Kotlin解説
上記のサンプルでは、Image#flush()
メソッドを使用してImage
オブジェクトのリソースを解放することで、Animated GIF
画像のアニメーションを初期状態までリセットしています。
上記のサンプルでは、Image#flush()
メソッドを使用してImage
オブジェクトのリソースを解放することでAnimated GIF
画像のアニメーションを初期状態までリセットしています。
- 左:
JButton
-
JButton#setRolloverIcon(...)
でAnimated GIF
を設定し、マウスによるロールオーバーが発生するとImage#flush()
が実行され、カウントダウンアニメーションが最初からリスタート -
JButton#setIcon(...)
には先頭画像のアイコン、JButton#setPressedIcon(...)
には、空アイコンを設定 -
JButton#setRolloverIcon(...)
でAnimated GIF
を設定しマウスによるロールオーバーが発生するとImage#flush()
が実行されカウントダウン・アニメーションが最初からリスタート -
JButton#setIcon(...)
には先頭画像のアイコン、JButton#setPressedIcon(...)
には空アイコンを設定
-
- 右:
JLabel
- マウスリスナーを追加し、クリックで
Image#flush()
が呼ばれて、アニメーションが再開 -
JButton
で、Image#flush()
されると、同じImage
オブジェクトを使用しているのでアニメーションが止まる - マウスリスナーを追加しクリックで
Image#flush()
が呼ばれてアニメーションが再開 -
JButton
でImage#flush()
されると同じImage
オブジェクトを使用しているのでアニメーションが止まる
- マウスリスナーを追加し、クリックで