JCheckBox란 무엇인가?
JCheckBox는 JToggleButton을 확장한 컴포넌트로, 선택됨(checked) 또는 선택되지 않음(unchecked) 상태를 가질 수 있는 작은 사각형 박스입니다.
- JCheckBox를 클릭하면 선택됨에서 선택되지 않음으로, 또는 그 반대로 자동으로 상태가 전환됩니다.
- 체크박스의 상태가 변경될 때마다 ActionListener 또는 ItemListener 이벤트가 발생합니다.
- isSelected() 메서드를 사용하면 체크박스가 현재 선택되어 있는지 여부를 확인할 수 있습니다.
ButtonGroup으로 단일 선택 구현하기
기본적으로 여러 개의 체크박스를 배치하면 사용자가 모든 항목을 동시에 선택할 수 있습니다. 하지만 라디오 버튼처럼 한 번에 하나의 항목만 선택되도록 하고 싶다면 ButtonGroup 클래스를 활용하면 됩니다. ButtonGroup에 체크박스들을 추가하면, 그룹 내에서 하나의 항목을 선택할 때 이전에 선택된 항목은 자동으로 해제됩니다.
예제 코드
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class JCheckBoxGroupTest extends JFrame {
private ButtonGroup checkBoxGroup;
private JCheckBox jcb1, jcb2, jcb3;
private JPanel panel;
public JCheckBoxGroupTest() {
super("JCheckBoxGroup Test");
panel = new JPanel(new GridLayout(3,0));
jcb1 = new JCheckBox("India", true);
jcb2 = new JCheckBox("England", false);
jcb3 = new JCheckBox("Australia", false);
checkBoxGroup = new ButtonGroup();
// 체크박스를 ButtonGroup에 추가
checkBoxGroup.add(jcb1);
checkBoxGroup.add(jcb2);
checkBoxGroup.add(jcb3);
panel.add(jcb1);
panel.add(jcb2);
panel.add(jcb3);
add(panel);
setSize(375, 250);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String args[]) {
new JCheckBoxGroupTest();
}
}실행 결과
위 코드를 실행하면 세 개의 체크박스(India, England, Australia)가 화면에 표시됩니다. 처음에는 "India"가 기본적으로 선택되어 있으며, 다른 체크박스를 클릭하면 이전 선택이 자동으로 해제되고 새로운 항목만 선택된 상태로 유지됩니다.

핵심 정리
- ButtonGroup 객체를 생성하고
add()메서드로 체크박스를 추가하면 단일 선택 동작이 적용됩니다. - ButtonGroup은 버튼들의 시각적 배치에는 영향을 주지 않으며, 오직 선택 상태의 논리적인 그룹화만 담당합니다.
- 라디오 버튼(JRadioButton)과 마찬가지로 체크박스에도 동일한 방식으로 적용할 수 있어, UI 설계 시 유연하게 활용할 수 있습니다.