12.7 创建滑动条
12.7 创建滑动条
JSlider
的用法和JProgressBar
的用法非常相似,这一点可以从它们共享同一个Model
类看出来。使用JSlider
可以创建一个滑动条,这个滑动条同样有最小值、最大值和当前值等属性。
JSlider
与JProgressBar
的主要区别
JSlider
不是采用填充颜色的方式来表示该组件的当前值,而是采用滑块的位置来表示该组件的当前值JSlider
允许用户手动改变滑动条的当前值。JSlider
允许为滑动条指定刻度值,这系列的刻度值既可以是连续的数字,也可以是自定义的刻度值,甚至可以是图标。
使用JSlider
创建滑动条的步骤
创建JSlider
对象
使用JSlider
的构造器创建一个JSlider
对象,JSlider
有多个重载的构造器,但这些构造器总共可以接收如下4个参数。
orientation
:指定该滑动条的摆放方向,默认是水平摆放。可以接收SwingConstants.VERTICAL
和SwingConstants.HORIZONTAL
两个值min
:指定该滑动条的最小值,该属性值默认为0。max
:指定该滑动条的最大值,该属性值默认是为100。value
:指定该滑动条的当前值,该属性值默认是为50。
方法 | 描述 |
---|---|
JSlider() |
Creates a horizontal slider with the range 0 to 100 and an initial value of 50. |
JSlider(int orientation) |
Creates a slider using the specified orientation with the range 0 to 100 and an initial value of 50. |
JSlider(int min, int max) |
Creates a horizontal slider using the specified min and max with an initial value equal to the average of the min plus max. |
JSlider(int min, int max, int value) |
Creates a horizontal slider using the specified min, max and value. |
JSlider(int orientation, int min, int max, int value) |
Creates a slider with the specified orientation and the specified minimum, maximum, and initial values. |
JSlider(BoundedRangeModel brm) |
Creates a horizontal slider using the specified BoundedRangeModel. |
设置滑动条的外观
调用JSlider
的如下方法来设置滑动条的外观样式
方法 | 描述 |
---|---|
void setExtent(int extent) |
设置滑动条上的保留区,用户拖动滑块时不能超过保留区。例如,最大值为100的滑动条,如果设置保留区为20,则滑块最大只能拖动到80 |
void setInverted(boolean b) |
设置是否需要反转滑动条,滑动条的滑轨上刻度值默认从小到大、从左到右排列。如果该方法设置为true ,则排列方向会反转过来。 |
void setLabelTable(Dictionary labels) |
为该滑动条指定刻度标签。该方法的参数是Dictionary 类型,Dictionary 是一个古老的、抽象集合类,其子类是Hashtable 。传入的Hashtable 集合对象的key-value 对为{Integer value,java.Swing.JComponent label} 格式,刻度标签可以是任何组件。 |
void setMajorTickSpacing(int n) |
设置主刻度标记的间隔 |
void setMinorTickSpacing(int n) |
设置次刻度标记的间隔。 |
void setPaintLabels(boolean b) |
设置是否在滑块上绘制刻度标签。如果没有为该滑动条指定刻度标签,则默认绘制将刻度值的数值作为标签。 |
void setPaintTicks(boolean b) |
设置是否在滑块上绘制刻度标记 |
void setPaintTrack(boolean b) |
设置是否为滑块绘制滑轨。 |
void setSnapToTicks(boolean b) |
设置滑块是否必须停在滑道的有刻度处。如果设置为true ,则滑块只能停在有刻度处;如果用户没有将滑块拖到有刻度处,则系统自动将滑块定位到最近的刻度处 |
为JSlider
对象添加事件监听器
如果程序需要在用户拖动滑块时做岀相应处理,则应为该JSlider
对象添加事件监听器。JSlider
提供了addChangeListener
方法来添加事件监听器,该监听器负责监听滑动值的变化
方法 | 描述 |
---|---|
void addChangeListener(ChangeListener l) |
Adds a ChangeListener to the |
添加到其他容器中
将JSlider
对象添加到其他容器中显示出来。
程序 创建滑动条
下面程序示范了如何使用JSlider
来创建滑动条
1 | import java.awt.*; |
上面程序向窗口中添加了多个滑动条,程序通过粗体字代码来控制不同滑动条的不同外观。运行上面程序,会看到如图12.31所示的各种滑动条的效果。
JSlider
也使用BoundedRangeModel
作为保存其状态数据的Model
对象,程序可以直接修改Model
对象来改变滑动条的状态,但大部分时候程序无须使用该Model
对象。
JSlider
也提供了addChangeListener
方法来为滑动条添加监听器,无须像JProgressBar
那样监听它所对应的Model
对象。