package eventPractice;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
// 외부 클래스 : 클래스안에 또다른 클래스를 포함하고 있으면 외부 클래스라고 한다.
class OutClass extends JFrame {
InnerClass innerClass; // 내부클래스 멤버변수 선언
// 이번에는 일반클래스가 아닌 외부 클래스에서 코드가 진행된다.
public OutClass() {
initData();
setInitLayout();
}
private void initData() {
setTitle("paint 사용법"); // 프레임 타이틀
setSize(800, 800); // 프레임 사이즈
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 프레임이 종료시 프로그램 종료
innerClass = new InnerClass(); // 내부클래스를 외부클래스에서 멤버 변수로 선언한걸 new 해서 배치해줄 준비를 해준다.
}
private void setInitLayout() {
setVisible(true); // 프레임을 화면에 보여줌
add(innerClass); // 그림을 그려놓은 클래스인 내부클래스를 배치를 해준다.
}
// 여기 클래스는 지금 외부클래스 안에있는 위치이므로 내부클래스라고 한다.
// 내부 클래스에는 인스턴스 내부클래스와 정적 내부클래스 2가지가 있다.
// 접근제어 지시자를 설정 할 수 가있다.
// static가 붙게되면 정적 내부클래스라고 한다.
public static class InnerClass extends JPanel {
// 그림을 그려주는 기능인 paint를 오버라이드를 해준다.
@Override
public void paint(Graphics g) {
super.paint(g);
g.drawString("글자, 문자열을 그릴수가 있다.", 50, 50); // drawString : x축으로 50 y축으로 50 위치에 문자열을 출력한다.
g.drawRect(300, 300, 150, 150); // drawRect : x축으로 300 y축으로 300 기준에서 가로 세로 150크기의 사각형을 그린다.
g.drawLine(355, 330, 355, 380); // drawLine : x축으로 355 y축으로 330의 위치와 drawLine : x축으로 355 y축으로 330의 위치를 서로 잇는
// 선을 그린다.
}
}
}
// 프로그램 실행 메인
public class PaintTest {
public static void main(String[] args) {
new OutClass();
}
}
'개발일지 > 자바' 카테고리의 다른 글
각각의 버튼의 콜백메소드 (0) | 2022.09.17 |
---|---|
콜백 매소드 (0) | 2022.09.16 |
(Image Class, inner Class 활용), 이미지 파일 불러오는 법 - 2 (0) | 2022.09.14 |
(Image Class, inner Class 활용), 이미지 파일 불러오는 법 - 1 (0) | 2022.09.14 |
GridLayout(배열, ArrayList활용) (1) | 2022.09.13 |
댓글