bboks.net™

[자바 애플릿] 더블버퍼링 예제 본문

Java/Java

[자바 애플릿] 더블버퍼링 예제

bboks.net 2007. 6. 19. 12:11
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;

public class TestDoubleBuffer extends Applet implements Runnable {

	int x, y;
	boolean posX, posY;
	Image offImg;
	Graphics gc;

	Thread thr;

	public void init() {
		this.x = 0;
		this.y = 0;
		this.posX = true;
		this.posY = true;
	}

	public void start() {
		offImg = this.createImage(this.getWidth(), this.getHeight());
		gc = this.offImg.getGraphics();
		this.thr = new Thread(this);
		this.thr.start();
	}

	public void destroy() {
	}

	public void stop() {
	}

	public void update(Graphics g) {
		paint(g);
	}

	public void paint(Graphics g) {
		g.drawImage(this.offImg, 0, 0, this);
	}

	public void paintComp(Graphics g) {
		g.setColor(Color.GREEN);
		g.fillRect(0, 0, this.getWidth(), this.getHeight());
		g.setColor(Color.WHITE);
		g.fillOval(x, y, 30, 30);
	}

	public void run() {
		while (true) {
			this.paintComp(this.gc);
			try {
				if (this.posX)
					this.x += 3;
				else
					this.x -= 3;
				if (this.posY)
					this.y += 3;
				else
					this.y -= 3;

				if (x + 30 > this.getWidth())
					this.posX = false;
				if (y + 30 > this.getHeight())
					this.posY = false;
				if (x < 0)
					this.posX = true;
				if (y < 0)
					this.posY = true;
				Thread.sleep(25);
			} catch (Exception e) {
			}

			this.repaint();
		}
	}
}