Files
java-examples/docs/Swing.md

7.2 KiB

Java Swing 쉽게 배우기

1. Swing이란?

Java SwingGUI(그래픽 사용자 인터페이스)를 만드는 라이브러리다.
버튼, 창, 메뉴, 입력 필드 등을 쉽게 만들 수 있다.

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)

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)

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)

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)

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 프로그램부터 복잡한 데스크톱 애플리케이션까지 개발 가능!