JAVA

패널 사용해보기

jiyoon12 2025. 4. 28. 16:05
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 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을 붙여보자.
        // panel1에 아직 배치관리자를 설정 안했음...(기본 배치관리자가 셋팅 된다.)
        panel1.setLayout(new FlowLayout(FlowLayout.LEFT,30,30));
        panel1.add(button1);
        panel1.add(button2);

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

    }

    // 테스트 코드 작성
    public static void main(String[] args) {
        new MyPanelEx1();
    }
}
package _swing;

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

public class MyPaintFrame extends JFrame {
    // 변수, 생성자, 메서드, 내부 클래스
    // 패널
    // private JPanel panel; <-- 이 패널도 클레스이기 때문에 내가 정의한 클래스에 상속을 받을 수 있다.
    private MyDrawPanel drawPanel;

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

    private void initData() {
        setTitle("내부 클래스 JPanel 상속 처리");
        setSize(800, 800);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);

        drawPanel = new MyDrawPanel();
    }

    private void setInitLayout() {
        super.add(drawPanel);
    }

    // 우리가 정의할 정적 내부 클래스
    static class MyDrawPanel extends JPanel {

        // paint 철자 확인!
        @Override
        public void paint(Graphics g) {
            super.paint(g);
            g.drawRect(50, 50, 100, 50);
            g.drawLine(200,100,200,350);
            g.drawLine(300,300,350,500);
            g.drawString("***",500,500);
            g.drawString("⭐⭐⭐***",530,530);
        }

    } //end of inner class

    //메인 함수
    public static void main(String[] args) {
        new MyPaintFrame();
    }
}

'JAVA' 카테고리의 다른 글

이미지 올려보기  (1) 2025.04.28
패널 이용해서 집 만들기  (0) 2025.04.28
좌표값으로 컴포넌트 배치하기  (0) 2025.04.28
기본 컴포넌트  (0) 2025.04.28
BorderLayout과 배열의 활용  (0) 2025.04.28