Summary
JButtonなどのコンポーネントに設定したAnimatedGifのリソースを一旦解放して最初から再生します。java - Animated ImageIcon as Button - Stack Overflowを参考にしています。
Screenshot

Advertisement
Source Code Examples
ImageIcon animatedIcon = new ImageIcon(url);
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, KotlinDescription
上記のサンプルでは、Image#flush()メソッドを使用してImageオブジェクトのリソースを解放することでAnimated GIF画像のアニメーションを初期状態までリセットしています。
- 左:
JButtonJButton#setRolloverIcon(...)でAnimated GIFを設定しマウスによるロールオーバーが発生するとImage#flush()が実行されカウントダウン・アニメーションが最初からリスタートJButton#setIcon(...)には先頭画像のアイコン、JButton#setPressedIcon(...)には空アイコンを設定
- 右:
JLabel- マウスリスナーを追加しクリックで
Image#flush()が呼ばれてアニメーションが再開 JButtonでImage#flush()されると同じImageオブジェクトを使用しているのでアニメーションが止まる
- マウスリスナーを追加しクリックで