본문 바로가기
JAVA/예제

[JAVA] Vector를 활용한 Polygon 그리기

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

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class DrawPolygonEx extends JFrame {
	public DrawPolygonEx() {
		setTitle("다각형 그리기");
		setSize(300, 300);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setContentPane(new MyPanel());
		setVisible(true);
	}

	class MyPanel extends JPanel {
		private Vector<Integer> x = new Vector<>();
		private Vector<Integer> y = new Vector<>(); //x와 y를 벡터형식으로 잡겠다는 뜻

		public MyPanel() {
			this.addMouseListener(new MouseAdapter() {
				@Override
				public void mousePressed(MouseEvent e) {
					x.add(e.getX());
					y.add(e.getY());
					repaint();
				}

			});
		}

		@Override
		protected void paintComponent(Graphics g) {
			super.paintComponent(g);
			g.setColor(Color.MAGENTA);

			// drawPolygon()을 호출하기 위한 다각형 점 들의 배열 만들기
			// 배열 공간 확보
			int xs[] = new int[x.size()];
			int ys[] = new int[y.size()];

			// 배열의 값 채우기
			for (int i = 0; i < x.size(); i++) {
				xs[i] = x.get(i);
				ys[i] = y.get(i);
			}

			// 다각형 그리기
			g.drawPolygon(xs, ys, xs.length);
		}

	}

	public static void main(String[] args) {
		new DrawPolygonEx();
	}
}

클릭할 때마다 선이 추가됨

728x90
반응형

댓글