JToggleButton이란?
JToggleButton은 Java Swing에서 제공하는 AbstractButton 클래스를 확장한 컴포넌트입니다. 일반 버튼과 달리 한 번 누르면 눌린 상태가 유지되고, 다시 한 번 눌러야 원래 상태로 돌아오는 ON/OFF 토글 방식의 버튼을 구현할 때 사용됩니다.
JToggleButton의 주요 특징은 다음과 같습니다.
- 처음 누르면 눌린 상태가 그대로 유지되며, 두 번째로 눌렀을 때만 해제됩니다.
- 버튼이 눌릴 때마다 ActionEvent가 발생합니다.
- 선택(selection) 개념을 지원하는 컴포넌트처럼 ItemEvent도 함께 발생시킬 수 있습니다. 버튼이 눌리면 '선택됨(selected)' 상태가 되고, 튀어나오면 '선택 해제(deselected)' 상태가 됩니다.
ItemEvent 처리 방법
토글 버튼의 상태 변화를 처리하려면 ItemListener 인터페이스를 구현해야 합니다. 이 인터페이스는 항목의 상태가 변경될 때 호출되는 itemStateChanged() 메서드를 정의하고 있습니다.
이벤트가 발생한 버튼의 현재 상태는 isSelected() 메서드를 호출하여 확인할 수 있습니다. 이 메서드는 버튼이 선택된 상태면 true, 그렇지 않으면 false를 반환합니다.
예제 코드
아래 예제는 JToggleButton을 생성하고 ItemListener를 등록하여 버튼의 상태에 따라 텍스트를 변경하는 프로그램입니다.
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class JToggleButtonTest extends JFrame implements ItemListener {
private JToggleButton jtb;
JToggleButtonTest() {
setTitle("JToggleButton Test");
setLayout(new FlowLayout());
setJToggleButton();
setAction();
setSize(450, 300);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
private void setJToggleButton() {
jtb = new JToggleButton("ON");
add(jtb);
}
private void setAction() {
jtb.addItemListener(this);
}
public void itemStateChanged(ItemEvent eve) {
if(jtb.isSelected())
jtb.setText("OFF");
else
jtb.setText("ON");
}
}
public class MainApp {
public static void main(String[] args) {
new JToggleButtonTest();
}
}실행 결과
프로그램을 실행하면 초기 상태에서는 "ON"이라는 텍스트가 표시된 토글 버튼이 나타납니다.

버튼을 클릭하면 눌린 상태로 전환되면서 isSelected()가 true를 반환하고, 버튼의 텍스트가 "OFF"로 변경됩니다.

이처럼 JToggleButton은 체크박스나 라디오 버튼처럼 켜고 끌 수 있는 기능이 필요한 UI를 만들 때 매우 유용하게 활용할 수 있습니다.