JSlider란 무엇인가?
JSlider는 JComponent 클래스의 하위 클래스로, 스크롤 바와 유사하게 동작하는 Java Swing 컴포넌트입니다. 사용자가 지정된 정수 범위 내에서 숫자 값을 선택할 수 있도록 해주며, 슬라이더에는 값 범위 위를 미끄러지듯 이동하며 원하는 값을 선택할 수 있는 노브(knob)가 포함되어 있습니다. 노브의 위치가 변경될 때마다 ChangeListener 인터페이스를 통해 이벤트가 발생합니다.
슬라이더를 수평 방향으로 이동할 때 값 변경을 실시간으로 감지하려면 ChangeListener를 등록하고, Graphics2D 클래스를 활용해 paint() 메서드를 오버라이드하여 화면에 변경된 값을 그려주면 됩니다.
예제 코드
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class ValueChangeJSliderTest extends JFrame {
private JSlider slider;
public ValueChangeJSliderTest() {
setTitle("ValueChangeJSlider Test");
slider = new JSlider(JSlider.HORIZONTAL, 0, 20, 1);
// 값이 변경될 때마다 화면을 다시 그리도록 리스너 등록
slider.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent ce) {
repaint();
}
});
setLayout(new BorderLayout());
slider.setBackground(Color.white);
slider.setMajorTickSpacing(1);
slider.setPaintTicks(true);
slider.setPaintLabels(true);
add(slider, BorderLayout.NORTH);
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
// 값이 변경될 때마다 호출되어 새로운 값을 화면에 표시
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setFont(new Font("Serif", Font.ITALIC, 25));
g2d.drawString("" + slider.getValue(), 200, 130);
}
public static void main(String[] args) {
new ValueChangeJSliderTest();
}
}
코드 핵심 포인트
- new JSlider(JSlider.HORIZONTAL, 0, 20, 1): 최소값 0, 최대값 20, 초기값 1을 가지는 수평 슬라이더를 생성합니다.
- addChangeListener(): 슬라이더에 ChangeListener를 등록하여 노브가 움직일 때마다
stateChanged()메서드가 호출됩니다. - repaint(): 값이 변경될 때마다 프레임을 다시 그리도록 요청합니다.
- paint() 오버라이드: Graphics2D 객체로 캐스팅한 후
drawString()메서드를 사용해 현재 슬라이더 값을 화면에 출력합니다. - setMajorTickSpacing(), setPaintTicks(), setPaintLabels(): 눈금 간격 설정과 눈금·레이블 표시 여부를 지정하여 슬라이더의 가독성을 높입니다.
실행 결과

프로그램을 실행한 후 슬라이더의 노브를 좌우로 움직이면, ChangeListener가 값 변경을 감지하여 paint() 메서드를 통해 현재 선택된 값이 화면 중앙에 실시간으로 표시되는 것을 확인할 수 있습니다.