package ch03;

import java.awt.Graphics;

import javax.swing.JFrame;
import javax.swing.JPanel;

/**
 * 
 * @author GGG 학습목표 내부클래스 외부클래스
 */
//외부클래스
public class MyFrame1 extends JFrame {

	MyDrawPanel drawPanel; // 맴버 변수 선언

	// 내부클래스 선언 - inner class
	// 내부 클래스에는 - 정적 클래스 , 인스턴스 클래스
	// 정적클래스란 :static <-- (new 하지 않더라고 접금 가능) 클래스 접근가능
	// 인스턴스클래스란 : 외부클래스가 new, 내부클래스 new 되어야한다
	class MyDrawPanel extends JPanel {

		// paints -->X
		// print -->X
		@Override
		public void paint(Graphics g) {
			super.paint(g);
			g.drawRect(100, 100, 100, 200);
			g.drawRect(100, 50, 50, 50);
			g.drawString("반가워", 300, 300);
			g.drawLine(250, 300, 500, 550);
			g.drawOval(300, 300, 50, 50);
		}
	}

	public MyFrame1() {
		initDate();
		setInitLayout();
	}

	private void initDate() {
		setTitle("외부클래스란");
		setSize(600, 600);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		drawPanel = new MyDrawPanel();
	}

	private void setInitLayout() {
		add(drawPanel);
		setVisible(true);
	}

}// end class

//클래스화 상속의 예
package ch03;

public class MainTest1 {

	// 내부클래스 사용

	public static void main(String[] args) {
		// 외부파일에서 MyDrawPanel사용할일이없고
		// MyFrame1 에서만 사용하는 녀석이라면 내부 클래스에서 설계할수있다.
		new MyFrame1();
	}

}

'자바' 카테고리의 다른 글

GUI를 이용한 이미지 출력 연습(Swing)  (1) 2023.02.21
외부 클래스를 이용한 집만들기!  (1) 2023.02.21
Swing 을 이용한 GUI  (0) 2023.02.21
GUI 프로그램  (0) 2023.02.20
Object 클래스  (0) 2023.02.20

+ Recent posts