Java如何使用JSlider组件?

这个简单的例子向您展示了如何使用JSlider组件。JSlider组件旨在让用户轻松地输入一个由最小值和最大值限定的数值。

创建JSlider时,需要设置几个属性。 这些包括设置setMinorTickSpacing(),setMajorTickSpacing(),setPaintTicks()和setPaintLabels()。 这些方法设置次要刻度间距,主要刻度间距,显示刻度和刻度标签。

为了从JSlider获取选定的值,我们需要实现在ChangeListener接口中定义的stateChanged()方法,然后通过调用addChangeListener()方法将侦听器传递给JSlider。

package org.nhooo.example.swing;

import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;

public class JSliderDemo extends JPanel implements ChangeListener {
    private JTextField field;

    public JSliderDemo() {
        initializeUI();
    }

    private void initializeUI() {
        setLayout(new BorderLayout());
        setPreferredSize(new Dimension(500, 200));

        // 用水平创建一个JSlider实例
        //方向。将0定义为最小值,然后
        //最大值为50。设定初始值
        // 至10
        JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 50, 10);

        slider.setPaintTicks(true);
        slider.setPaintLabels(true);
        slider.setMinorTickSpacing(1);
        slider.setMajorTickSpacing(10);

        slider.addChangeListener(this);

        JLabel label = new JLabel("Selected Value:");
        field = new JTextField(5);

        JPanel panel = new JPanel();
        panel.setLayout(new FlowLayout());
        panel.add(label);
        panel.add(field);

        add(slider, BorderLayout.NORTH);
        add(panel, BorderLayout.SOUTH);
    }

    public void stateChanged(ChangeEvent e) {
        JSlider slider = (JSlider) e.getSource();

        // 获取JSlider的选择值
        field.setText(String.valueOf(slider.getValue()));
    }

    public static void showFrame() {
        JPanel panel = new JSliderDemo();
        panel.setOpaque(true);

        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.setTitle("JSlider Demo");
        frame.setContentPane(panel);
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JSliderDemo.showFrame();
            }
        });
    }
}

以下是上面代码段的结果。