# **Java Swing 쉽게 배우기** ## **1. Swing이란?** **Java Swing**은 **GUI(그래픽 사용자 인터페이스)를 만드는 라이브러리**다. 버튼, 창, 메뉴, 입력 필드 등을 쉽게 만들 수 있다. **Swing의 특징** ✔ **AWT보다 강력한 GUI 제공** (AWT는 운영체제에 의존, Swing은 독립적) ✔ **더 많은 UI 컴포넌트 제공** (버튼, 리스트, 테이블, 트리 등) ✔ **이식성이 높음** (운영체제에 상관없이 동일한 UI 제공) ✔ **이벤트 기반 프로그래밍 가능** --- ## **2. 주요 Swing 클래스 및 메서드 정리** ### **(1) `JFrame` 클래스 (메인 창)** | 메서드 | 설명 | |--------|------------------------------| | `setSize(int width, int height)` | 창의 크기를 설정 | | `setVisible(boolean b)` | 창을 화면에 표시 (`true`) 또는 숨김 (`false`) | | `setDefaultCloseOperation(int operation)` | 창 닫기 동작 설정 (예: `EXIT_ON_CLOSE`) | | `add(Component comp)` | 창에 컴포넌트 추가 | --- ### **(2) `JPanel` 클래스 (패널 - 여러 컴포넌트를 담는 컨테이너)** | 메서드 | 설명 | |--------|------------------------------| | `add(Component comp)` | 패널에 컴포넌트 추가 | | `setLayout(LayoutManager mgr)` | 패널의 배치 관리자 설정 | --- ### **(3) `JButton` 클래스 (버튼)** | 메서드 | 설명 | |--------|------------------------------| | `setText(String text)` | 버튼의 텍스트 설정 | | `addActionListener(ActionListener l)` | 버튼 클릭 이벤트 설정 | --- ### **(4) `JLabel` 클래스 (텍스트 라벨)** | 메서드 | 설명 | |--------|------------------------------| | `setText(String text)` | 라벨의 텍스트 변경 | | `setIcon(Icon icon)` | 라벨에 이미지 아이콘 설정 | --- ### **(5) `JTextField` 클래스 (한 줄 입력 필드)** | 메서드 | 설명 | |--------|------------------------------| | `setText(String text)` | 입력 필드에 텍스트 설정 | | `getText()` | 입력된 텍스트 가져오기 | | `addActionListener(ActionListener l)` | 엔터 키 입력 이벤트 설정 | --- ### **(6) `JTextArea` 클래스 (여러 줄 입력 필드)** | 메서드 | 설명 | |--------|------------------------------| | `setText(String text)` | 입력 필드에 텍스트 설정 | | `getText()` | 입력된 텍스트 가져오기 | | `setLineWrap(boolean wrap)` | 자동 줄바꿈 설정 | --- ### **(7) `JCheckBox` 클래스 (체크박스)** | 메서드 | 설명 | |--------|------------------------------| | `setSelected(boolean b)` | 체크 상태 설정 | | `isSelected()` | 체크 여부 확인 | --- ### **(8) `JRadioButton` 클래스 (라디오 버튼)** | 메서드 | 설명 | |--------|------------------------------| | `setSelected(boolean b)` | 선택 상태 설정 | | `isSelected()` | 선택 여부 확인 | --- ### **(9) `JComboBox` 클래스 (드롭다운 목록)** | 메서드 | 설명 | |--------|------------------------------| | `addItem(Object item)` | 목록에 항목 추가 | | `getSelectedItem()` | 선택된 항목 가져오기 | --- ### **(10) `JList` 클래스 (리스트 박스)** | 메서드 | 설명 | |--------|------------------------------| | `setListData(Object[] data)` | 리스트 아이템 설정 | | `getSelectedValue()` | 선택된 값 가져오기 | --- ### **(11) `JTable` 클래스 (테이블)** | 메서드 | 설명 | |--------|------------------------------| | `setModel(TableModel model)` | 테이블 데이터 설정 | | `getValueAt(int row, int column)` | 특정 위치의 값 가져오기 | --- ### **(12) `JMenuBar`, `JMenu`, `JMenuItem` 클래스 (메뉴)** | 메서드 | 설명 | |--------|------------------------------| | `JMenuBar.add(JMenu menu)` | 메뉴바에 메뉴 추가 | | `JMenu.add(JMenuItem item)` | 메뉴에 항목 추가 | --- ## **3. 간단한 Swing 예제** ### **✔ 기본 창 만들기 (`JFrame`)** ```java import javax.swing.*; public class SwingExample { public static void main(String[] args) { // 프레임 생성 JFrame frame = new JFrame("Swing 기본 창"); frame.setSize(400, 300); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 창을 보이게 설정 frame.setVisible(true); } } ``` ✅ `JFrame`을 사용하여 **기본적인 창을 생성**하는 코드다. ✅ `setSize()`로 크기 설정, `setVisible(true)`로 창을 표시한다. --- ### **✔ 버튼 추가 및 이벤트 처리 (`JButton`)** ```java import javax.swing.*; import java.awt.event.*; public class ButtonExample { public static void main(String[] args) { JFrame frame = new JFrame("버튼 예제"); frame.setSize(300, 200); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JButton button = new JButton("클릭하세요!"); button.addActionListener(e -> JOptionPane.showMessageDialog(null, "버튼이 눌렸습니다!")); frame.add(button); frame.setVisible(true); } } ``` ✅ `JButton`을 추가하고, **버튼 클릭 이벤트를 처리**하는 코드다. ✅ `JOptionPane.showMessageDialog()`를 사용해 **팝업 메시지 출력**이 가능하다. --- ### **✔ 텍스트 입력 필드 (`JTextField`)** ```java import javax.swing.*; public class TextFieldExample { public static void main(String[] args) { JFrame frame = new JFrame("텍스트 입력 예제"); frame.setSize(300, 200); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JTextField textField = new JTextField(20); JButton button = new JButton("확인"); button.addActionListener(e -> JOptionPane.showMessageDialog(null, "입력한 값: " + textField.getText())); JPanel panel = new JPanel(); panel.add(textField); panel.add(button); frame.add(panel); frame.setVisible(true); } } ``` ✅ `JTextField`를 사용하여 **사용자로부터 입력을 받는 GUI**다. ✅ 버튼 클릭 시 **입력된 값이 팝업으로 출력**된다. --- ### **✔ 체크박스 (`JCheckBox`)** ```java import javax.swing.*; public class CheckBoxExample { public static void main(String[] args) { JFrame frame = new JFrame("체크박스 예제"); frame.setSize(300, 200); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JCheckBox checkBox = new JCheckBox("동의합니다."); JButton button = new JButton("확인"); button.addActionListener(e -> { if (checkBox.isSelected()) { JOptionPane.showMessageDialog(null, "체크됨!"); } else { JOptionPane.showMessageDialog(null, "체크 안됨!"); } }); JPanel panel = new JPanel(); panel.add(checkBox); panel.add(button); frame.add(panel); frame.setVisible(true); } } ``` ✅ **체크박스를 추가하고 상태를 확인**하는 코드다. --- ## **4. 정리** ✔ **Swing은 Java에서 GUI를 만들기 위한 라이브러리!** ✔ **버튼, 입력 필드, 체크박스, 리스트, 테이블 등 다양한 UI 제공** ✔ **이벤트 리스너를 통해 사용자 입력 처리 가능** ✅ **Swing을 활용하면 간단한 GUI 프로그램부터 복잡한 데스크톱 애플리케이션까지 개발 가능!**