这个简单的例子向您展示了如何使用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();
}
});
}
}以下是上面代码段的结果。