概要

Timerを使ったCursorの切り替えで、マウスポインタのループアニメーションを行います。

サンプルコード

Toolkit tk = Toolkit.getDefaultToolkit();
list[0] = tk.createCustomCursor(tk.createImage(url00), pt, "00");
list[1] = tk.createCustomCursor(tk.createImage(url01), pt, "01");
list[2] = tk.createCustomCursor(tk.createImage(url02), pt, "02");
animator = new Timer(100, new ActionListener() {
  private int counter;
  @Override public void actionPerformed(ActionEvent e) {
    button.setCursor(list[counter]);
    counter = (counter + 1) % list.length;
  }
});
button = new JButton(new AbstractAction("Start") {
  @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();
    }
  }
});
view all

解説

上記のサンプルでは、ボタンをクリックすると、パネル上にあるカーソルがアニメーションするようになっています。3枚の透過pngファイルをコマにして、Timerで順番にこれを切り替えています。

各コマは、ぶーん(通常の選択.ani、VIPポインタ)から、ANIめーかーを使って生成しています。

参考リンク

コメント

  • Cursorに用いるpngファイルは、フルカラー(24ビット)ではなく256色にしておかないと、うまく透過できないようです。もしかしたら自分のPCの画面の色が16ビットになっているせいかもしれません。 -- aterai
  • Windows XPで、カーソルをAnimated GIFファイルから生成(Toolkit.getDefaultToolkit().createCustomCursor)しようとすると、 落ちる? Ubuntuだと、アニメーションはしないけど、ちゃんと画像がカーソルになる。 -- aterai