package Thread;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Random;

public class ThreadRectDraw extends Frame implements Runnable {
	int x = 0;
	int y = 20;
	boolean xOrient, yOrient;
	Random ran;

	public ThreadRectDraw(String title) {
		super(title);
		ran = new Random();
		setSize(300, 300);
		setVisible(true);
		addWindowListener(new WindowAdapter() {
			public void windowClostin(WindowEvent e) {
				System.exit(0);
			}
		});
	}

	public void paint(Graphics gr) {
		Dimension d = this.getSize();
		if (xOrient) {
			x--;
			if (x < 0) {
				x = 0;
				xOrient = false;
			}
		} else {
			x++;
			if (x >= d.width - 20) {
				x = d.width - 20;
				xOrient = true;
			}
		}
		if (yOrient) {
			y--;
			if (y < 0) {
				y = 0;
				yOrient = false;
			}
		} else {
			y++;
			if (y >= d.height - 20) {
				y = d.height - 20;
				yOrient = true;
			}
		}
		int r = ran.nextInt(255);
		int g = ran.nextInt(255);
		int b = ran.nextInt(255);
		gr.setColor(new Color(r, g, b));
		gr.drawRect(x, y, 20, 20);

	}

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

	@Override
	public void run() {
		while (true) {
			repaint();
			try {
				Thread.sleep(5);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ThreadRectDraw thread = new ThreadRectDraw("ThreadRect");
		Thread task = new Thread(thread);
		task.start();

	}

}

 

'JAVA' 카테고리의 다른 글

[JAVA] == 와 equals의 차이점  (0) 2021.03.11
[JAVA] Call By Value / Call By Reference  (0) 2021.03.11
[JAVA] 쓰레드(Thread) -2  (0) 2020.10.03
[JAVA] 쓰레드(Thread) -1  (0) 2020.10.03
[JAVA] IO (FileInputStream) (3)  (0) 2020.10.01

+ Recent posts