Swing/AnimatedCursor のバックアップの現在との差分(No.2)
TITLE:Cursorのアニメーション
Cursorのアニメーション
編集者:Terai Atsuhiro~
作成日:2006-05-01
更新日:2021-10-14 (木) 14:05:44
概要
Timer
を使ったCursor
の切り替えで、マウスポインタのループアニメーションを行います。
Screenshot
Advertisement
概要
マウスカーソルをアニメーションさせます。サンプルコード
#spanend
#spanadd
Toolkit tk = Toolkit.getDefaultToolkit();
#spanend
#spanadd
list[0] = tk.createCustomCursor(tk.createImage(url00), pt, "00");
#spanend
#spanadd
list[1] = tk.createCustomCursor(tk.createImage(url01), pt, "01");
#spanend
#spanadd
list[2] = tk.createCustomCursor(tk.createImage(url02), pt, "02");
#spanend
#spanadd
animator = new Timer(100, new ActionListener() {
#spanend
private int counter;
@Override public void actionPerformed(ActionEvent e) {
button.setCursor(list[counter]);
counter = (counter + 1) % list.length;
}
#spanadd
});
#spanend
#spanadd
button = new JButton(new AbstractAction("Start") {
#spanend
@Override public void actionPerformed(ActionEvent e) {
JButton b = (JButton) e.getSource();
if (animator.isRunning()) {
b.setText("Start");
animator.stop();
} else {
b.setText("Stop");
animator.start();
}
}
#spanadd
});
#spanend
#spanadd
View in GitHub: Java, Kotlin#screenshot
解説
-
JButton
のクリックでパネル上にあるカーソルのアニメーションを開始 -
3
枚の透過png
ファイルをコマにしてTimer
で順番にこれを切り替え
サンプルコード
list[0] = tk.createCustomCursor(tk.createImage(url00), p, "00"); list[1] = tk.createCustomCursor(tk.createImage(url01), p, "01"); list[2] = tk.createCustomCursor(tk.createImage(url02), p, "02"); setCursor(list[0]); animator = new javax.swing.Timer(100, new ActionListener() { private int count = 0; public void actionPerformed(ActionEvent e) { setCursor(list[count]); count = (count<list.length-1)?count+1:0; } }); JButton button = new JButton(new AbstractAction("スタート") { public void actionPerformed(ActionEvent e) { JButton button = (JButton)e.getSource(); if(animator.isRunning()) { button.setText("スタート"); animator.stop(); }else{ button.setText("ストップ"); animator.start(); } } });
参考リンク
- VIPポインタ@Wiki - トップページ
- このサンプルの各コマはぶーん(通常の選択.ani、VIPポインタ)からANIめーかーを使って生成
- ANIめーかー(Windows95/98/Me/アミューズメント)
- Cursorオブジェクトの生成
- oreilly.co.jp -- Online Catalog: Java Swing Hacks
- Toolkit (Java Platform SE 8)
- &jnlp;
- &jar;
- &zip;
コメント
-
Cursor
に用いるpng
ファイルは、フルカラー(24
ビット)ではなく256
色にしておかないと、うまく透過できないようです。もしかしたら自分のPC
の画面の色が16
ビットになっているせいかもしれません。 -- aterai-
32
ビットにしてもだめみたいです。 -- aterai - 追記:
JDK 6
なら、フルカラーでも問題なく透過できるようです。[JDK-6388546] PNG with transparent background doesn't render correctly - Java Bug System -- aterai
-
-
Windows XP
で、カーソルをAnimated GIF
ファイルから生成(Toolkit.getDefaultToolkit().createCustomCursor
)しようとすると、落ちる?Ubuntu
だと、アニメーションはしないけど、ちゃんと画像がカーソルになる。 -- aterai- デッドロック? -- aterai
- メモ: [JDK-4343270] Toolkit.createCustomCursor() hangs the VM under Win NT - Java Bug System、[JDK-4939855] Please allow Toolkit.createCustomCursor() to accept multi-frame images - Java Bug System -- aterai
- よくみたら、Toolkit#createCustomCursor(...)に、「マルチフレームイメージは無効で、このメソッドがハングすることがあります。」と注意書きが存在する(
1.4.2
のドキュメントから?)。 -- aterai