• 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:TrayIconのアニメーション
#navi(../)
*TrayIconのアニメーション [#fe9b32a0]
>編集者:[[Terai Atsuhiro>terai]]~
作成日:2007-02-05~
更新日:&lastmod;
---
category: swing
folder: AnimatedTrayIcon
title: TrayIconのアニメーション
tags: [SystemTray, Icon, Animation]
author: aterai
pubdate: 2007-02-05T02:07:43+09:00
description: SystemTrayに追加したトレイアイコンをアニメーションさせます。
image: https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTHtWabBgI/AAAAAAAAARk/J0ExgthCnn4/s800/AnimatedTrayIcon.png
---
* 概要 [#summary]
`SystemTray`に追加したトレイアイコンをアニメーションさせます。

#contents
#download(https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTHtWabBgI/AAAAAAAAARk/J0ExgthCnn4/s800/AnimatedTrayIcon.png)

**概要 [#s2d078f8]
SystemTrayに追加したアイコン(JDK 6 以上)をア二メーションさせます。

#screenshot

**サンプルコード [#l1766e4f]
#code{{
 final TrayIcon icon = new TrayIcon(imglist[0], "TRAY", popup);
 animator = new javax.swing.Timer(100, new ActionListener() {
     private int idx = 0;
     public void actionPerformed(ActionEvent e) {
         icon.setImage(imglist[idx]);
         idx = (idx<imglist.length-1)?idx+1:0;
     }
 });
* サンプルコード [#sourcecode]
#code(link){{
TrayIcon icon = new TrayIcon(imglist[0], "TRAY", popup);
animator = new Timer(100, new ActionListener() {
  private int idx = 0;
  @Override public void actionPerformed(ActionEvent e) {
    icon.setImage(imglist[idx]);
    idx = (idx + 1) % imglist.length;
  }
});
}}
//-&jnlp;
-&jar;
-&zip;

**解説 [#s4dc164c]
16*16の画像を3パターン用意し、これを JDK 6 で追加されたTrayIcon#setImage(Image)メソッドを使って切り替えることでアニメーションしています。
* 解説 [#explanation]
上記のサンプルでは、`16x16`の画像を`3`パターン用意しこれを`JDK 6`で追加された`TrayIcon#setImage(Image)`メソッドを使って切り替えることでトレイアイコンのアニメーションを行っています。

//**参考リンク
**コメント [#x7cedb82]
- animated gif を使うほうが簡単だと思うのですが、作ったGifが悪いのか、環境のせいなのか、残像がでてしまいます。 -- [[terai]] &new{2007-02-05 (月) 19:00:34};
-- メモ: [[Bug ID: 6453582 Animation gif too fast>http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6453582]] -- [[terai]] &new{2007-04-19 (木) 21:11:50};
-- 上のバグ?でウェイトが効かずに残像が残っていたのではなく、前のコマがそのまま残して透過色(背景色)でクリアしないタイプ?のアニメGIFになっていたようです。[[Giam>http://homepage3.nifty.com/furumizo/giamd.htm]]を使って、全コマの消去方法を「背景色で塗りつぶす」に変更したファイルを使用すると、正常に描画されるようになりました。 -- [[terai]] &new{2007-04-19 (木) 22:04:52};
* 参考リンク [#reference]
- [[SystemTrayにアイコンを表示>Swing/SystemTray]]
- [[TrayIconのダブルクリック>Swing/ClickTrayIcon]]

* コメント [#comment]
#comment
- `animated gif`が使用できればより簡単だと思うが、作った`Gif`が悪いのか、環境のせいなのか、残像がでてしまう。 -- &user(aterai); &new{2007-02-05 (月) 19:00:34};
-- メモ: [https://bugs.openjdk.org/browse/JDK-6453582 &#91;JDK-6453582&#93; Animation gif too fast - Java Bug System] -- &user(aterai); &new{2007-04-19 (木) 21:11:50};
-- 上のバグ?でウェイトが効かずに残像が残っていたのではなく、前のコマがそのまま残して透過色(背景色)でクリアしないタイプ?のアニメ`GIF`になっていた。[http://homepage3.nifty.com/furumizo/giamd.htm Giam]を使って、全コマの消去方法を「背景色で塗りつぶす」に変更したファイルを使用すると、正常に描画されるようになった。 -- &user(aterai); &new{2007-04-19 (木) 22:04:52};

#comment