La clase JSlider, permite crear una barra donde nosotros seremos capaces de seleccionar un valor entero. Permitiendo al usuario tomar el valor dentro de un rango de valores definidos por el programador, cabe mencionar que esta clase hereda de JComponent.

JSlider por defecto muestra una barra horizontal pero permite cambiar la orientación, ademas tiene algunos metodos encargados de poner el indicador al valor más cercado de la barra (estos metodos seran mencionados a continuación).

Primero comenzamos creando una ventana (ya explique como hacerlo):

package jslider;

import javax.swing.JFrame;

public class JSliderMain {
    
    public static void main(String[] args) {
        JFrame f = new JFrame("Slider");
        f.setBounds(300, 100, 500, 200);
        f.add(new PanelSlider());
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
    }
    
}

El segundo paso es crear una clase que herede de JPanel, un panel es como una bolsa que permite guardar componentes dentro de ella, ademas usted sera capas de meter una bolsa dentro de otra (osea un JPanel dentro de otro JPanel) esto permite crear interfaces graficas mas complejas y de mejor usabilidad. Creamos la clase PanelSlider:

package jslider;

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

public class PanelSlider extends JPanel {
    
    private JSlider radioSlider;

    public PanelSlider() {
        addComponentes();
    }

    public final void addComponentes() {
        setLayout(new BorderLayout());
        radioSlider = new JSlider(100, 200, 150);
        radioSlider.setMinorTickSpacing(5);
        radioSlider.setMajorTickSpacing(25);
        radioSlider.setPaintLabels(true);
        radioSlider.setOrientation(SwingConstants.VERTICAL);
        radioSlider.setPaintTicks(true);
        add(radioSlider, BorderLayout.CENTER);
    }

}

Me tome la molestia de agregar los metodos mas utilizados, sin embargo si usted desea implementar mas funciones a su barra podrá consultar la API de JAVA.

La clase JSlider tiene sobrecarga de constructores, el constructor utilizado en el ejemplo recibe por parametro un valor minimo, maximo y uno por defecto donde colocara la flecha (indicador) que nosotros podemos desplazar dentro de ese rango, en otras palabras el minimo y maximo establecen un rango de numero de inicio a fin.

Ejemplo: En el código anterior pasamos por parametro los valores JSlider(100, 200, 150); indicando que nuestro valor inicial es 100 y final 200. El tercer valor pasado por parametro indica la posición del indicador (flecha) donde debe colocarse por defecto.

setMajorTickSpacing(25): con este metodo estamos diciendo que cada 25 valores va a colocar una etiqueta indicando el valor debajo o al lado (Cuando la orientación esta en vertical).

setMinorTickSpacing(5): este simplemente divide los valores cada 5, pero estos se colocan dentro del espacio dejado por el metodo anterior, podrás observar el cambio con la siguiente imagen:

setPaintLabels(true): este metodo se encarga de dibujar los valores numéricos, por lo cual debes pasar un valor de tipo boolean.

setPaintTicks(true): dibuja las lineas encargadas de dividir los espacios dejados con los metodos setMajorTickSpacing() y setMinorTickSpacing().

setOrientation(SwingConstants.VERTICAL): Recibe por parametro constantes de clase (son valores enteros) los cuales permiten determinar la posición de la barra.