Java Applet

Timerクラス

アニメのような動きのある画面の作り方を見ていきます。 それには、Timerクラスを使います。

Timerクラスの使い方です。 1秒間隔で描画するプログラムを作ってみます。

TestJavaApplet21.java

線が伸びていきます。

import java.awt.Graphics2D;
import java.util.Timer;
import java.util.TimerTask;

import Tpl01;

public class TestJavaApplet21 extends Tpl01 {

	int i;

	public void init() {
		i = 0;
		Timer t = new Timer();
		t.scheduleAtFixedRate(new MyTimerTask(), 0, 1000);
	}

	public void draw(Graphics2D g2) {
		g2.drawLine(0, 0, i, i);
		i += 10;
		if (i > getWidth()) {
			i = 0;
		}
	}

	class MyTimerTask extends TimerTask {
		public void run() {
			repaint();
		}
	}
}

解説

絵が動いているように見せる原理はパラパラ漫画です。 描画する。 画面をクリアする。 これを繰り返します。 結局動いているように見えるわけです。 これは、Timer クラスを使えば可能です。

Timerクラスは、一定時間ごとに TimerTaskクラスを呼びます。 ですから、まず 、TimerTask クラスを継承したクラスを作ります。 この例では、MyTimerTask にしました。 その中で、画面を再描画するメソッド repaint を書きます。

class MyTimerTask extends TimerTask {
	public void run() {
		repaint();
	}
}

Timerクラスの変数を生成します。

Timer t = new Timer();

次は、すぐに(0秒後に)1秒おきに MyTimerTaskを呼ぶためのプログラムです。 scheduleAtFixedRateメソッドを使い、次のように書きます。 時間の単位はミリ秒です。 1秒は1000ミリ秒です。 ですから、この例では1秒おきに MyTimerTask を呼びます。

t.scheduleAtFixedRate(new MyTimerTask(), 0, 1000);

実際の描画は、draw メソッドに書きます。 線を描画していますが、少しずつ長くしています。

g2.drawLine(0, 0, i, i);

[前へ] [戻る] [次へ]