滑块是程序中的一种常见组件,比如调节音量的滑块,音乐播放器的进度滑块等。Java Swing中也有滑块组件:JSlider,那么Java的滑块组件要怎么使用呢?接下来我们就来一起学习一下JSlider的使用方法。
一、构造方法
滑块(JSlider)是一个允许用户在有限区间内通过移动滑块来选择值的组件。
- 构造方法1:JSlider() 创建一个范围在 0~100 且初始值为 50 的水平滑块
- 构造方法2:JSlider(int orientation) 使用指定的方向创建一个滑块,范围在 0~100 且初始值为 50
orientation:SwingConstants.VERTICAL(垂直方向),SwingConstants.HORIZONTAL(水平方向)
- 构造方法3:JSlider(int min,int max)
使用指定的最小值和最大值来创建一个水平滑块,初始值等于最小值加上最大值的平均值 - 构造方法4:JSlider(int min,int max,int value) 用指定的最小值、最大值和初始值创建一个水平滑块
二、常用方法
1、设置滑块最小值:
void setMinimum(int min)
2、设置滑块最大值:
void setMaximum(int max)
3、设置滑块当前值:
void setValue(int n)
4、获取滑块的当前值:
int getValue()
5、设置主刻度标记间隔:
void setMajorTickSpacing(int n)
6、 设置单个主刻度内的 次刻度标记间隔:
void setMinorTickSpacing(int n)
7、设置是否绘制 刻度线(默认false):
void setPaintTicks(boolean b)
8、设置是否绘制 刻度标签(默认false):
void setPaintLabels(boolean b)
9、设置是否绘制滑道(默认是true):
void setPaintTrack(boolean b)
10、 设置滑块的方向:void setOrientation(int orientation)
orientation的值为SwingConstants.VERTICAL 或 SwingConstants.HORIZONTAL
11、设置是否颠倒刻度值(刻度值从大到小,默认false)void setInverted(boolean b)
12、 设置滑块是否对齐到刻度(默认false)。设置为 true之后,则滑块只能停留在有刻度的地方即滑块取值不连续:
void setSnapToTicks(boolean b)
13、 用于指定将在 给定值处 绘制 对应的标签 来替代刻度数值文本的显示:
void setLabelTable(Dictionary<Integer, JComponent> labels)
14、/添加滑块的值改变监听器:
void addChangeListener(ChangeListener l)
三、实例
创建一个0-100的滑块,初始值是30,
给滑块添加自定义标签(0:start,50:middle,100:end)
给滑块添加监听器,滑块值改变的时候会打印当前值在控制台。
package swing;
import java.awt.Container;
import java.awt.Toolkit;
import java.util.Dictionary;
import java.util.Hashtable;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
/**
*swing 滑块
*/
public class Demo22_JSlider {
public static void main(String[] args) {
JFrame frame=new JFrame("滑块组件示例");
SwingUtils.setCenter(frame);//设置窗体大小600*800并居中
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container contentPane=frame.getContentPane();
JSlider slider=new JSlider(0,100,30);
slider.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
System.out.println("当前值:"+slider.getValue());
}
});
/*
* 给指定的刻度值显示自定义标签
*/
Hashtable<Integer, JComponent> hashtable = new Hashtable<Integer, JComponent>();
hashtable.put(0, new JLabel("Start")); // 0 刻度位置,显示 "Start"
hashtable.put(50, new JLabel("Middle")); // 10 刻度位置,显示 "Middle"
hashtable.put(100, new JLabel("End")); // 20 刻度位置,显示 "End"
slider.setLabelTable(hashtable);
slider.setMajorTickSpacing(10);//设置主刻度标记
slider.setMinorTickSpacing(5);//设置次刻度标记
slider.setPaintLabels(true);
slider.setPaintTicks(true);
contentPane.add(slider);
frame.setVisible(true);
}
}
来源:CSDN
作者:辛勤小王子
链接:https://blog.csdn.net/qq_37917691/article/details/103601641