滑块就是一个可以在(有刻度的)有限区间内,通过移动滑块来选择数值的组件。
长这个样子:
实现滑块的类:JSlider类
需要导入:
import javax.swing.JSlider;
主要的构造方法:
构造方法 | 构造方法 |
---|---|
JSlider() | 创建一个范围在 0~100 且初始值为 50 的水平滑块 |
JSlider(BoundedRangeModel brm) | 使用指定的 BoundedRangeModel 创建一个水平滑块 |
JSlider(int orientation) | 使用指定的方向创建一个滑块,范围在 0~100 且初始值为 50 |
JSlider(int min,int max) | 使用指定的最小值和最大值来创建一个水平滑块,初始值等于最小值加上最大值的平均值 |
JSlider(int min,int max,int value) | 用指定的最小值、最大值和初始值创建一个水平滑块 |
滑块组件的一些常用的方法:
方法名称 | 说明 |
---|---|
createStandardLabels(int increment) | 创建一个数字文本标签的 Hashtable,从滑块最小值处开始增加,并使用指定的增量 |
getLabelTable() | 返回哪些标签在哪些刻度绘制的字典 |
getMaj orTickSpacing() | 返回主刻度标记的间隔 |
getMaximum() | 从 BoundedRangeModel 返回滑块所支持的最大值 |
getMinimum() | 从 BoundedRangeModel 返回滑块所支持的最小值 |
getMinorTickSpacing() | 返回次刻度标记的间隔 |
getSnapToTicks() | 如果滑块(及其所表示的值)解析为最靠近用户放置滑块处的刻度标记的值,则返回为 true |
getValue() | 从 BoundedRangeModel 返回滑块的当前值 |
setLabelTable(Dictionary labels) | 用于指定将在给定值处绘制哪个标签 |
setMaj orTickSpacing(int n) | 此方法设置主刻度标记的间隔 |
setMaximum(int maximum) | 将滑块的最大值设置为 maximum |
setMinimum(int minimum) | 将滑块的最小值设置为 minimum |
setMinorTickSpacing(int n) | 设置次刻度标记的间隔 |
setOrientation(int orientation) | 将滑块的方向设置为 SwingConstants.VERTICAL 或 SwingConstants.HORIZONTAL |
setPaintLabels(boolean b) | 确定是否在滑块上绘制标签 |
setPaintTicks(boolean b) | 确定是否在滑块上绘制刻度标记 |
setPaintTrack(boolean b) | 确定是否在滑块上绘制滑道 |
setSnapToTicks(boolean b) | 指定为 true,则滑块(及其所表示的值)解析为最靠近用户放置滑块处的刻度标记的值 |
setValue(int n) 将滑块的当前值设置为 n |
现在来尝试创建一个滑块,并调用一些方法:
JSlider jslider1 = new JSlider(0,100); //创建一个滑块,刻度从0到100
jslider1.setMajorTickSpacing(10); //设置最大间隔
jslider1.setMinorTickSpacing(1); //设置最小间隔
jslider1.setPaintLabels(true); //设置是否显示刻度的数字
jslider1.setPaintTicks(true); //设置是否显示刻度的格子
运行的结果:
完整的源代码:
public class view
{
public static void main(String[] args)
{
JFrame jframe = new JFrame("动作监听"); //窗口
jframe.setSize(250, 250); //设置窗口大小
JPanel jpanel1 = new JPanel(); //面板
JSlider jslider1 = new JSlider(0,100);//创建一个滑块
jslider1.setMajorTickSpacing(10); //最大间隔
jslider1.setMinorTickSpacing(1); //最小间隔
jslider1.setPaintLabels(true); //是否显示刻度的数字
jslider1.setPaintTicks(true); //是否显示刻度格子
//添加的操作
jpanel1.add(jslider1);
jframe.add(jpanel1);
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭时操作
jframe.setVisible(true); //设置可见
}
}