package CHAPTER10.Exams;
/*
 * 실전 프로젝트 2: 설문조사 애플리케이션
프로그램 작성 조건:

설문 화면에는 이름(JTextField), 나이(JSlider), 성별(JRadioButton), 관심사(JCheckBox) 입력 컴포넌트가 포함됩니다.
"제출" 버튼과 "초기화" 버튼을 추가하여 사용자가 입력한 데이터를 확인하거나 입력값을 초기화할 수 있도록 구성하세요.
(이벤트 처리는 제외)
실행 결과:

설문 화면이 나타나며, 각 입력 컴포넌트를 통해 데이터를 입력할 수 있습니다.
버튼을 누르면 동작을 구현할 수 있는 준비 상태가 됩니다.
힌트:

JPanel과 BorderLayout을 사용하여 컴포넌트를 그룹화하고 정렬하세요.
 */
import javax.swing.*;
import java.awt.*;

public class Project2SurveyApp extends JFrame {
    public Project2SurveyApp() {
        setTitle("실전 프로젝트 2: 설문조사 애플리케이션");
        setSize(500, 400);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 메인 패널 설정
        JPanel mainPanel = new JPanel(new GridLayout(5, 2, 10, 10)); // 5행 2열 레이아웃

        // 이름 입력
        mainPanel.add(new JLabel("이름:"));
        JTextField nameField = new JTextField();
        mainPanel.add(nameField);

        // 나이 입력
        mainPanel.add(new JLabel("나이:"));
        JSlider ageSlider = new JSlider(0, 100, 25);
        ageSlider.setMajorTickSpacing(20);
        ageSlider.setMinorTickSpacing(5);
        ageSlider.setPaintTicks(true);
        ageSlider.setPaintLabels(true);
        mainPanel.add(ageSlider);

        // 성별 선택
        mainPanel.add(new JLabel("성별:"));
        JPanel genderPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
        JRadioButton male = new JRadioButton("남성");
        JRadioButton female = new JRadioButton("여성");
        ButtonGroup genderGroup = new ButtonGroup();
        genderGroup.add(male);
        genderGroup.add(female);
        genderPanel.add(male);
        genderPanel.add(female);
        mainPanel.add(genderPanel);

        // 관심사 선택
        mainPanel.add(new JLabel("관심사:"));
        JPanel interestPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
        interestPanel.add(new JCheckBox("프로그래밍"));
        interestPanel.add(new JCheckBox("여행"));
        interestPanel.add(new JCheckBox("독서"));
        mainPanel.add(interestPanel);

        // 버튼 추가
        JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
        JButton submitButton = new JButton("제출");
        JButton resetButton = new JButton("초기화");
        buttonPanel.add(submitButton);
        buttonPanel.add(resetButton);

        // JFrame에 컴포넌트 추가
        add(mainPanel, BorderLayout.CENTER);
        add(buttonPanel, BorderLayout.SOUTH);
    }

    public static void main(String[] args) {
        Project2SurveyApp frame = new Project2SurveyApp();
        frame.setVisible(true);
    }
}

/**
 * 실전 프로젝트 2: 설문조사 애플리케이션
주요 로직:

JSlider는 최소, 최대, 초기값을 지정하여 사용자가 범위를 설정.
setMajorTickSpacing()과 setPaintLabels(true)로 더 명확한 슬라이더 값 표시.
JRadioButton은 ButtonGroup을 사용해 성별 선택을 제한.
주의사항:

JSlider의 값은 이벤트 처리를 추가하지 않으면 사용자와의 상호작용 없이 조정만 가능합니다.
여러 JCheckBox는 개별 선택이 가능하므로, 필요하면 상태를 추적하는 로직을 구현해야 합니다.

 * 
 */