Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java Swing에서 JRadioButton과 JCheckBox의 차이점 완벽 정리

Swing에서 JRadioButtonJCheckBox는 모두 JToggleButton 클래스를 상속받는 컴포넌트입니다. 두 컴포넌트의 가장 큰 차이점은 선택 방식에 있습니다. JRadioButton은 여러 개의 버튼 중 한 번에 하나만 선택할 수 있는 반면, JCheckBox는 여러 개의 항목을 동시에 다중 선택할 수 있습니다.

JRadioButton이란?

  • JRadioButton은 '선택됨' 또는 '선택되지 않음'의 상태를 가지는 항목을 표현하는 컴포넌트입니다. 일반적으로 사용자에게 여러 옵션을 제공하기 위해 라디오 버튼 그룹을 만들지만, 한 번에 하나의 옵션만 선택할 수 있습니다.
  • JRadioButtonActionListener, ChangeListener, ItemListener 인터페이스를 통해 이벤트를 처리할 수 있습니다.
  • 라디오 버튼은 보통 여러 옵션을 그룹으로 묶어 표시하는 용도로 사용되기 때문에 ButtonGroup 클래스와 함께 사용됩니다. ButtonGroup은 주어진 시점에 그룹 내에서 단 하나의 버튼만 선택 상태가 되도록 보장하며, 자체적인 시각적 외관은 가지지 않습니다.
  • JRadioButton의 주요 메서드로는 setText(), getText(), setEnabled(), setMnemonic() 등이 있습니다.

JRadioButton 예제 코드

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

public class JRadioButtonTest extends JFrame {
    public JRadioButtonTest() {
        super("JRadioButton Test");
        JRadioButton jrb1 = new JRadioButton("Java");
        JRadioButton jrb2 = new JRadioButton("Python");
        JRadioButton jrb3 = new JRadioButton("Scala");

        ButtonGroup group = new ButtonGroup();
        group.add(jrb1);
        group.add(jrb2);
        group.add(jrb3);

        setLayout(new FlowLayout());
        add(jrb1);
        add(jrb2);
        add(jrb3);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(450, 375);
        setLocationRelativeTo(null);
        setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new JRadioButtonTest();
            }
        });
    }
}

실행 결과

Java Swing에서 JRadioButton과 JCheckBox의 차이점 완벽 정리

JCheckBox란?

  • JCheckBox 역시 '선택됨' 또는 '선택되지 않음'의 상태를 나타내는 컴포넌트로, 체크박스를 클릭하여 상태를 전환할 수 있습니다.
  • 표준 JCheckBox 컴포넌트는 체크박스와 그 목적을 설명하는 라벨(label)로 구성됩니다.
  • JCheckBox는 ItemListener 또는 ActionListener 인터페이스를 통해 이벤트를 처리할 수 있습니다.
  • JCheckBox의 주요 메서드로는 setLabel(), getLabel(), setState(), getState() 등이 있습니다.

JCheckBox 예제 코드

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

public class JCheckBoxTest extends JFrame {
    JCheckBoxTest() {
        super("JCheckBox Test");
        JLabel lblHobbies = new JLabel("Languages");
        JCheckBox chkSports = new JCheckBox("Java");
        JCheckBox chkMusic = new JCheckBox("Python ", true);
        JCheckBox chkReading = new JCheckBox("Scala");

        setLayout(new FlowLayout());
        add(lblHobbies);
        add(chkSports);
        add(chkMusic);
        add(chkReading);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(450, 375);
        setLocationRelativeTo(null);
        setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new JCheckBoxTest();
            }
        });
    }
}

실행 결과

Java Swing에서 JRadioButton과 JCheckBox의 차이점 완벽 정리

정리: 언제 무엇을 사용해야 할까?

사용자에게 상호 배타적인 단일 선택을 요구할 때는 JRadioButton을 ButtonGroup과 함께 사용하고, 성별·결제 수단처럼 하나만 골라야 하는 경우에 적합합니다. 반면 취미, 관심 분야, 설정 옵션처럼 여러 항목을 동시에 선택할 수 있어야 한다면 JCheckBox를 사용하는 것이 바람직합니다. 두 컴포넌트의 선택 방식 차이를 이해하면 UI 설계 시 더 직관적인 인터페이스를 만들 수 있습니다.