简单
/*
 * @Author: your name
 * @Date: 2020-11-05 10:21:52
 * @LastEditTime: 2020-11-05 10:45:16
 * @LastEditors: Please set LastEditors
 * @Description: In User Settings Edit
 * @FilePath: /java/calcu/SliderFrame.java
 */
package calcu;
import java.awt.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
public class SliderFrame extends JFrame {
    private JPanel sliderPanel;
    private JTextField textField;
    private ChangeListener listener;
    public static void main(String[] args) {
        SliderFrame t = new SliderFrame();
        t.setTitle("ImageTest");
        t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        t.setVisible(true);
    }
    public SliderFrame() {
        sliderPanel = new JPanel();
        sliderPanel.setLayout(new GridBagLayout());
        // common listener for all sliders
        listener = event -> {
            JSlider source = (JSlider) event.getSource();
            textField.setText("" + source.getValue());
        };
        // add a plain slider
        JSlider slider = new JSlider();
        addSlider(slider, "Plain");
        // add a slider with major and minor ticks
        slider = new JSlider();
        slider.setPaintTicks(true);
        slider.setMajorTickSpacing(20);
        slider.setMinorTickSpacing(5);
        addSlider(slider, "Ticks");
        // add a slider with no track
        slider = new JSlider();
        slider.setPaintTicks(true);
        slider.setSnapToTicks(true);
        slider.setMajorTickSpacing(20);
        slider.setMinorTickSpacing(5);
        addSlider(slider, "Snap to ticks");
        // add a slider with no track
        slider = new JSlider();
        slider.setPaintTicks(true);
        slider.setMajorTickSpacing(20);
        slider.setMinorTickSpacing(5);
        slider.setPaintTicks(false);
        addSlider(slider, "No track");
        // add an inverted slider
        slider = new JSlider();
        slider.setPaintTicks(true);
        slider.setMajorTickSpacing(20);
        slider.setMinorTickSpacing(5);
        slider.setInverted(true);
        addSlider(slider, "Inverted");
        // add a slider with numeric labels
        slider = new JSlider();
        slider.setPaintTicks(true);
        slider.setPaintLabels(true);
        slider.setMajorTickSpacing(20);
        slider.setMinorTickSpacing(5);
        addSlider(slider, "Labels");
        // add a slider with alphabetic labels
        slider = new JSlider();
        slider.setPaintLabels(true);
        slider.setPaintTicks(true);
        slider.setMajorTickSpacing(20);
        slider.setMinorTickSpacing(5);
        Dictionary<Integer, Component> labelTabel = new Hashtable<>();
        labelTabel.put(0, new JLabel("A"));
        labelTabel.put(20, new JLabel("B"));
        labelTabel.put(40, new JLabel("C"));
        labelTabel.put(60, new JLabel("D"));
        labelTabel.put(80, new JLabel("E"));
        labelTabel.put(100, new JLabel("F"));
        slider.setLabelTable(labelTabel);
        addSlider(slider, "Custon labels");
        // add a slider with icon labels because of no icons don‘t to show these
        // slider = new JSlider();
        // slider.setPaintTicks(true);
        // slider.setPaintLabels(true);
        // slider.setSnapToTicks(true);
        // slider.setMajorTickSpacing(20);
        // slider.setMinorTickSpacing(5);
        // add the text field that displays the slider value
        textField = new JTextField();
        add(sliderPanel, BorderLayout.CENTER);
        add(textField, BorderLayout.SOUTH);
        pack();
    }
    public void addSlider(JSlider s, String description) {
        s.addChangeListener(listener);
        JPanel panel = new JPanel();
        panel.add(s);
        panel.add(new JLabel(description));
        panel.setAlignmentX(Component.LEFT_ALIGNMENT);
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.gridy = sliderPanel.getComponentCount();
        gbc.anchor = GridBagConstraints.WEST;
        sliderPanel.add(panel, gbc);
    }
}
原文:https://www.cnblogs.com/eat-too-much/p/13930467.html