Swing

패널 사용해보기

whs5758 2025. 4. 28. 17:49
package _swing;

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

public class MyPanelEx1 extends JFrame {

    private JButton button1;
    private JButton button2;
    private JButton button3;
    private JButton button4;
    private JButton button5;
    private JButton button6;
    // 컴포넌트들을 그룹화 시킬 수 있다.
    // 즉, 각각의 배치관리자를 추가로 설정해서 관리할 수도 있다.
    private JPanel panel1;
    private JPanel panel2;

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

    public void initData() {
        setTitle("패널연습해보기");
        setSize(500, 500);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);

        panel1 = new JPanel();
        panel2 = new JPanel();

        button1 = new JButton("button1");
        button2 = new JButton("button2");
        button3 = new JButton("button3");
        button4 = new JButton("button4");

    }

    public void setInitLayout() {
        setLayout(new GridLayout(2, 1));

        // R G B
        // 0 0 0 --> 흰색
        // 255 255 255 --> 검은색
        panel1.setBackground(Color.RED);
        add(panel1);

        panel2.setBackground(Color.BLACK);
        add(panel2);

        // 패널1에 버튼1을 붙여보자
        // 패널1에 아직 배치 관리자를 설정하지 않았다. (기본 배치관리자가 세팅이 된다.)
        panel1.setLayout(new FlowLayout(FlowLayout.LEFT, 30, 30));
        panel1.add(button1);
        panel1.add(button2);

        panel2.setLayout(new FlowLayout(FlowLayout.RIGHT, 30, 30));
        panel2.add(button3);
        panel2.add(button4);
    }

    // 테스트 코드 작성
    public static void main(String[] args) {

        new MyPanelEx1();

    } // end of main
}


좌표기반으로 그림 그려보기

package test;

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

public class MyPaintFrame extends JFrame {

    private MyPanel myPanel;

    public MyPaintFrame() {
        initData();
        setInitData();
    }

    private void initData() {
        setTitle("HOME");
        setSize(800, 800);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);

        myPanel = new MyPanel();
    }

    private void setInitData() {
        add(myPanel);
    }

    static class MyPanel extends JPanel {

        @Override
        public void paint(Graphics g) {
            super.paint(g);
            // 집
            g.drawRect(200, 200, 200, 200);
            // 지붕
            g.drawLine(300, 100, 200, 200);
            g.drawLine(300, 100, 400, 200);
            // 창문
            g.drawRect(230, 250, 50, 50);
            g.drawLine(255, 250, 255, 300);
            g.drawLine(230, 275, 280, 275);
            // 문
            g.drawRect(300, 300, 70, 100);
            g.drawRoundRect(310, 350, 10, 10, 30, 30);
            // 별
            g.drawString("★                  ★", 100, 100);
            g.drawString("★                  ★", 140, 80);
            g.drawString("★  ★  ★  ★  ★", 490, 260);
            // 땅
            g.drawLine(0, 400, 800, 400);
            // 눈사람
            g.drawRoundRect(500, 335, 65, 65, 65, 65);
            g.drawRoundRect(510, 285, 50, 50, 50, 50);
            g.drawString("^ _ ^", 520, 315);
            g.drawLine(480, 335, 505, 350);
            g.drawLine(560, 350, 585, 335);
        }
    } // ene of static inner class

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

'Swing' 카테고리의 다른 글

이미지 겹쳐보기  (0) 2025.04.29
이미지 올려보기  (1) 2025.04.28
좌표값으로 컴포넌트 배치해보기  (0) 2025.04.28
기본 컴포넌트 소개  (0) 2025.04.28
BorderLayout 과 배열의 활용  (0) 2025.04.28