[Java/Swing] paint 메서드를 활용한 집 그리기

2023. 2. 14. 14:53·Java/Swing (GUI)
728x90
728x90

코드

import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class MyFrame2 extends JFrame {

    // 내부 클래스를 활용해서
    // JPanel 를 상속받고 paint 메서드로 집 그리기

    MyDrawPanel drawPanel;

    class MyDrawPanel extends JPanel {

        @Override
        public void paint(Graphics g) {
            super.paint(g);
            g.drawRect(140, 260, 200, 140);
            // 지붕
            g.drawLine(240, 160, 100, 260);
            g.drawLine(100, 260, 380, 260);
            g.drawLine(240, 160, 380, 260);

            // 굴뚝
            g.drawLine(155, 180, 155, 220);
            g.drawLine(180, 180, 180, 203);
            g.drawLine(155, 180, 180, 180);

            // 굴뚝 연기
            g.drawArc(123, 118, 40, 40, 65, 234);
            g.drawArc(148, 112, 40, 40, 30, 120);
            g.drawArc(148, 123, 40, 40, -30, -120);
            g.drawArc(173, 118, 40, 40, 240, 234);

            //창문
            g.drawRect(170, 300, 20, 20);
            g.drawRect(190, 300, 20, 20);
            g.drawRect(170, 320, 20, 20);
            g.drawRect(190, 320, 20, 20);
            g.drawRect(167, 297, 46, 46);

            // 문
            g.drawRect(260, 300, 60, 100);
            g.drawRect(263, 303, 54, 97); 
            g.drawOval(300, 350, 8, 8); // 손잡이

            // 지형
            g.drawLine(0, 400, 600, 400);

            // 별
            g.drawString("★", 70, 90);
            g.drawString("★", 380, 30);
            g.drawString("★", 310, 110);
            g.drawString("★", 180, 50);

            // 달
            g.drawArc(390, 50, 70, 70, 190, 284);
            g.drawArc(388, 54, 50, 50, 210, 240);          

        }
    } // end of inner class

    public MyFrame2() {
        initData();
        setInitLayout();
    }

    private void initData() {
        setTitle("내부 클래스 연습");
        setSize(500, 500);
        setDefaultCloseOperation(3);
        drawPanel = new MyDrawPanel();
    }

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

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

} // end of outer class

실행

320x100
반응형
저작자표시 비영리 변경금지 (새창열림)

'Java > Swing (GUI)' 카테고리의 다른 글

[Java/Swing] 배치 관리자 3 - NoLayout 구현  (0) 2023.02.14
[Java/Swing] 배치 관리자 2 - BorderLayout 구현  (0) 2023.02.14
[Java/Swing] 배치 관리자 1 - FlowLayout 구현  (0) 2023.02.14
[Java/Swing] 기본 구조  (0) 2023.02.14
[Java/Swing] javax.swing 패키지를 사용할 수 없는 문제 해결하기  (0) 2023.02.14
'Java/Swing (GUI)' 카테고리의 다른 글
  • [Java/Swing] 배치 관리자 2 - BorderLayout 구현
  • [Java/Swing] 배치 관리자 1 - FlowLayout 구현
  • [Java/Swing] 기본 구조
  • [Java/Swing] javax.swing 패키지를 사용할 수 없는 문제 해결하기
스응
스응
    반응형
    250x250
  • 스응
    이서영의 개발 블로그
    스응
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (385)
      • Java (134)
        • Base (54)
        • Spring Boot (37)
        • JSP (16)
        • Swing (GUI) (20)
        • Design Pattern (7)
      • C# (13)
      • PHP (18)
      • SQL (27)
      • Vue.js (9)
      • Tailwind CSS (4)
      • TypeScript (7)
      • HTML & CSS (27)
      • JavaScript (26)
      • jQuery (10)
      • Android (3)
      • - - - - - - - - - - - - - - (0)
      • Hotkeys (5)
      • CS (30)
      • IT Notes (13)
      • Error Notes (17)
      • Team Project (24)
        • Airlines Web Project (12)
        • University Web Project (6)
        • Strikers 1945 GUI Project (6)
      • My Project (18)
        • Library Web Project (8)
        • Pet Shopping Mall GUI Project (10)
      • etc. (0)
  • 블로그 메뉴

    • Home
    • Write
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    vuejs
    http
    면접
    java
    Android
    HTML
    zapier
    Swing
    tailwindcss
    php
    typeScript
    jQuery
    jsp
    티스토리챌린지
    C#
    SEO
    git
    Wordpress
    js
    오블완
    CSS
    SQL
    개발일지
    SpringBoot
    SWAGGER
    Hotkeys
    Codeigniter
    cs
    errorNote
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
스응
[Java/Swing] paint 메서드를 활용한 집 그리기
상단으로

티스토리툴바