본문 바로가기
JAVA/예제

[JAVA] Graphics 미니그림판

by JJH0100 2022. 10. 28.
728x90
반응형
package Ex01;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class Point{
	int x, y;
}

class MyPanel5 extends JPanel implements MouseMotionListener{
	private int index = 0;
	Point[] array = new Point[1000];
	
	public MyPanel5() {
		this.addMouseMotionListener(this);
	}
	
	@Override
	public void mouseDragged(MouseEvent e) {
		int x = e.getX();
		int y = e.getY();
		if(index > 1000) return;
		array[index] = new Point();
		array[index].x = e.getX();
		array[index].y = e.getY();
		index++;
		repaint();
	}
	@Override
	protected void paintComponent(Graphics g) {
		super.paintComponent(g);
		for(Point p : array) { //자바 1.5부터 도입된 향상 된 for문
			if(p !=null)
				g.drawRect(p.x, p.y, 1, 1);
		}
	}
	@Override
	public void mouseMoved(MouseEvent e) {
		// TODO Auto-generated method stub	
	}	
}

public class PaintEx extends JFrame{
	public PaintEx() {
		setSize(300, 300);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		add(new MyPanel5());
		setVisible(true);
	}
	public static void main(String[] args) {
		new PaintEx();
	}
}

 

빠르게 드래그를 하면 끊기는 것처럼 그려진다

repaint를 할 때마다 딜레이가 존재하기 때문.

728x90
반응형

'JAVA > 예제' 카테고리의 다른 글

[JAVA] 자판기  (0) 2022.10.28
[JAVA] 숫자 순서대로 클릭하기 게임  (0) 2022.10.28
[JAVA] Graphics 웃는 얼굴  (0) 2022.10.28
[JAVA] 신호등  (0) 2022.10.28
[JAVA] addActionListener 카운터증가  (0) 2022.10.28

댓글