Swing의 JSlider에서 범위(extent)를 설정하려면 setExtent() 메서드를 사용합니다. 이 메서드는 슬라이더 노브(knob)가 덮는 범위의 크기를 지정하며, 노브가 이동할 수 있는 최대 위치를 제한하는 역할을 합니다.
setExtent() 메서드 기본 사용법
아래 코드처럼 setExtent() 메서드에 원하는 값을 전달하여 범위를 설정할 수 있습니다.
JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 100, 70); slider.setMinorTickSpacing(5); slider.setMajorTickSpacing(20); slider.setPaintTicks(true); slider.setPaintLabels(true); slider.setExtent(20);
전체 예제 코드
다음은 JSlider에서 범위를 설정하는 완전한 예제입니다.
package my;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.WindowConstants;
public class SwingDemo {
public static void main(String[] args) {
JFrame frame = new JFrame("Frame with Slider");
// 가로 방향 슬라이더 생성 (최소값 0, 최대값 100, 초기값 70)
JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 100, 70);
slider.setMinorTickSpacing(5);
slider.setMajorTickSpacing(20);
slider.setPaintTicks(true);
slider.setPaintLabels(true);
// 범위(extent) 설정
slider.setExtent(20);
JPanel panel = new JPanel();
panel.add(slider);
frame.add(panel);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setSize(500, 300);
frame.setVisible(true);
}
}실행 결과
프로그램을 실행하면 다음과 같이 JSlider가 표시됩니다.

범위 설정의 효과
위 예제에서 setExtent(20)으로 범위를 설정했기 때문에, 슬라이더의 초기값이 70이고 최대값이 100이라도 노브를 끝까지 밀 수 없습니다. 즉, 노브는 최대 80까지만 이동 가능하며, 그 이상 확장할 수 없습니다.

이처럼 setExtent() 메서드를 활용하면 슬라이더 값의 상한을 유동적으로 제어할 수 있어, 특정 구간만 선택 가능하게 하는 UI를 손쉽게 구현할 수 있습니다.