• category: swing folder: TimerAction title: Timerの使用数を変更 tags: [Timer, Animation] author: aterai pubdate: 2014-04-14T00:48:39+09:00 description: パネルのタイルアニメーションで使用するjava.swing.Timerの数を変更して動作のテストを行います。 image: https://lh6.googleusercontent.com/-Kc02XwN3fHA/U0qu1BcXNEI/AAAAAAAACDg/UDwGuPoJmjk/s800/TimerAction.png

概要

パネルのタイルアニメーションで使用するjava.swing.Timerの数を変更して動作のテストを行います。

サンプルコード

// Timer: 1, ActionListener: 100
class Tile2 extends JComponent {
  private int red;
  public Tile2(final Random rnd, Timer timer) {
    super();
    timer.addActionListener(new ActionListener() {
      @Override public void actionPerformed(ActionEvent e) {
        red = rnd.nextInt(255);
        repaint();
      }
    });
  }

  @Override public Dimension getPreferredSize() {
    return new Dimension(10, 10);
  }

  @Override protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.setColor(new Color(red, 255 - red, 0));
    g.fillRect(0, 0, getWidth(), getHeight());
  }
}
View in GitHub: Java, Kotlin

解説

  • Timer: 100
    • 10x10個のアニメーション用タイル(JComponent)一つにそれぞれTimerを生成して使用(その為Timer10x10個存在する)
    • JDK 1.7.0_40以降で低速 すでに修正済みで上記のサンプルは他と差がない
    • JDK 1.8.0以降はJDK 1.7.0_25と同等
  • Timer: 1, ActionListener: 100
    • Timer1個だけ用意しこれにTimer#addActionListener(...)メソッドで100個のActionListenerを追加して使用
  • Timer: 1, ActionListener: 1
    • 1個のTimerを使用しforループで10x10のラベルの色を変更してアニメーションを実行

参考リンク

コメント