전공 과목 이수2👨‍💻/JAVA(공)

자바 | 8장 swing연습문제

천숭이 2021. 5. 27. 03:12

집그리기

import javax.swing.*;
import java.awt.*;
class HouseDrawingComponent extends JComponent {
	public void paintComponent(Graphics g) {
		// 단계 1: 지붕을 그린다.
		int[] xPnts = {100, 50, 150, 100};
		int[] yPnts = {30, 180, 180, 30};
		int nPnts = xPnts.length;
		g.fillPolygon(xPnts, yPnts, nPnts);
		// 지붕 위의 기와 모양을 그린다.
		g.setColor(Color.WHITE);
		g.drawArc(90, 50, 20, 40, 210, 120);
		g.drawArc(75, 87, 20, 40, 210, 120);
		g.drawArc(105, 87, 20, 40, 210, 120);
		g.drawArc(60, 125, 20, 40, 210, 120);
		g.drawArc(90, 125, 20, 40, 210, 120);
		g.drawArc(120, 125, 20, 40, 210, 120);
		// 단계 2: 몸채를 그린다.
		g.setColor(Color.BLACK);
		g.drawRect(60, 180, 80, 100);
		// 반원 모양의 창문을 그린다.
		g.setColor(Color.YELLOW);
		g.fillArc(80, 195, 40, 85, 0, 180);
		// 노란색 창문 주위를 2개의 검은색 선으로 그린다.
		g.setColor(Color.BLACK);
		g.drawArc(80, 195, 40, 85, 0, 180);
		g.drawArc(79, 195, 42, 86, 0, 180);
		g.drawLine(79, 238, 120, 238);
		g.drawLine(79, 239, 120, 239);
		// 사각형 문을 그려준다
		g.setColor(Color.gray);
		g.fillRect(85, 255, 30, 25);
		// 문 테두리를 선으로 그린다
		g.setColor(Color.BLACK);
		g.drawLine(85, 255, 115, 255);
		g.drawLine(85, 255, 85, 280);
		g.drawLine(115, 255, 115, 280);
		// 문 가운데 선을 검은색으로 그린다
		g.drawLine(100, 255, 100, 280);
		// 문 손잡이를 그린다
		g.fillOval(96,263,8,8);
	}
}
public class HouseViewer {
	public static void main(String[] args) {
		JFrame frame = new JFrame();
		frame.setSize(250, 350);
		frame.setTitle("House");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		HouseDrawingComponent component = new HouseDrawingComponent();
		frame.add(component);
		frame.setVisible(true);
	}
}

8.5 smile

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

class Smile extends JComponent {
	public void paintComponent(Graphics g) {
		// 지정된 얼굴색으로 얼굴을 그린다
		g.setColor(new Color(255,220,130));
		g.fillOval(40, 50, 150, 150);
		g.setColor(Color.BLACK);
		g.drawOval(40, 50, 150, 150);
		//눈을 그린다
		g.fillOval(80,93,9,9);
		g.fillOval(136,93,9,9);
		// 코를 그린다
		g.drawOval(100,115, 28, 28);
		g.setColor(new Color(230,20,80));
		g.fillOval(100,115,28,28);
		// 입을 그린다
		g.setColor(new Color(0,120,60));
		g.fillArc(75, 120, 85, 70, 180, 180);
		g.setColor(Color.BLACK);
		g.drawLine(75, 155, 160, 155);
		g.drawArc(75, 120, 85, 70, 180, 180);
		
	}
}
public class Quiz_8_5 {
	public static void main(String[] args) {
		JFrame frame = new JFrame();
		frame.setSize(250, 350);
		frame.setTitle("Smile ~ 8.5");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		Smile component = new Smile();
		frame.add(component);
		frame.setVisible(true);
	}
}

중도포기 오륜기

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

class Olympic extends JComponent {
	public void paintComponent(Graphics g) {
		g.setColor(new Color(238,238,238));
		g.fillOval(96, 96, 75, 76);
		// 링을 만들기 위해서는 색깔원들을 다섯개 만들고 가운데에 흰색 원을 넣어줘야 한다
		// 윗층 파란색, 검은색, 빨간색 원 만들기
		g.setColor(Color.blue);
		g.fillOval(60, 60, 88, 88);
		g.setColor(new Color(238,238,238));
		g.fillOval(66, 66, 75, 76);
		
		g.setColor(Color.black);
		g.fillOval(150,60,88,88);
		g.setColor(new Color(238,238,238));
		g.fillOval(156, 66, 75, 76);
		
		g.setColor(Color.red);
		g.fillOval(240,60,88,88);
		g.setColor(new Color(238,238,238));
		g.fillOval(246, 66, 75, 76);
		
		// 아랫층 노란색, 초록색 원 만들기
		g.setColor(Color.yellow);
		g.fillOval(100, 95, 88, 88);
		g.setColor(new Color(238,238,238));
		g.fillOval(106, 101, 75, 76);
		
		g.setColor(Color.green);
		g.fillOval(190, 95, 88, 88);
		g.setColor(new Color(238,238,238));
		g.fillOval(195, 101, 75, 76);
		
	}
}
public class Olympic_M {
	public static void main(String[] args) {
		JFrame frame = new JFrame();
		frame.setSize(450, 350);
		frame.setTitle("Olympic Flag 8.6.3");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		Olympic component = new Olympic();
		frame.add(component);
		frame.setVisible(true);
	}
}


오륜기 두번째 방법

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

class Olympic extends JComponent {
	public void paintComponent(Graphics g) {
		// 링을 만들기 위해서는 색깔원들을 다섯개 만들고 가운데에 흰색 원을 넣어줘야 한다
		g.setColor(Color.blue);
		g.drawOval(60, 60, 88, 88);
		
		g.setColor(Color.black);
		g.drawOval(150,60,88,88);
		
		g.setColor(Color.red);
		g.drawOval(240,60,88,88);

		// 아랫층 노란색, 초록색 원 만들기
		g.setColor(Color.yellow);
		g.drawOval(100, 95, 88, 88);
		
		g.setColor(Color.green);
		g.drawOval(190, 95, 88, 88);

	}
}
public class Olympic_M {
	public static void main(String[] args) {
		JFrame frame = new JFrame();
		frame.setSize(450, 350);
		frame.setTitle("Olympic Flag 8.6.3 planB");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		Olympic component = new Olympic();
		frame.add(component);
		frame.setVisible(true);
	}
}