Java Swing JSlider滑块的实现示例
1.概述
官方JavaDocsApi:javax.swing.JSlider
JSlider,滑块。
以图形方式在有界区间内通过移动滑块来选择值的组件。
滑块可以显示主刻度标记以及主刻度之间的次刻度标记。刻度标记之间的值的个数由setMajorTickSpacing(int)和setMinorTickSpacing(int)来控制。刻度标记的绘制由setPaintTicks(boolean)控制。
滑块也可以在固定时间间隔(或在任意位置)沿滑块刻度打印文本标签。标签的绘制由setLabelTable(Dictionary)和setPaintLabels(boolean)控制。
PS:当滑块获得焦点后,按键盘上的上下左右键也可以滑动滑块。
JSlider常用构造方法:
/** *参数说明: *orientation:滑块的方向,SwingConstants.VERTICAL或SwingConstants.HORIZONTAL,默认为水平方向 *min:滑块的最小值 *max:滑块的最大值 *value:滑块的初始值(默认为最小值和最大值之间的中间值) */ JSlider() JSlider(intorientation)//默认的最小值、最大值、初始值值分别为0,100,50 JSlider(intmin,intmax)//默认初始值为min和max之间的中间值 JSlider(intmin,intmax,intvalue) JSlider(intorientation,intmin,intmax,intvalue)
JSlider常用方法:
//设置滑块的最小值、最大值、当前值 voidsetMinimum(intmin) voidsetMaximum(intmax) voidsetValue(intn) //获取滑块的当前值 intgetValue() //设置主刻度标记间隔 voidsetMajorTickSpacing(intn) //设置单个主刻度内的次刻度标记间隔 voidsetMinorTickSpacing(intn) //设置是否绘制刻度线 voidsetPaintTicks(booleanb) //设置是否绘制刻度标签(刻度值文本) voidsetPaintLabels(booleanb) //设置是否绘制滑道 voidsetPaintTrack(booleanb) //设置滑块的方向,SwingConstants.VERTICAL或SwingConstants.HORIZONTAL voidsetOrientation(intorientation) //设置是否颠倒刻度值(刻度值从大到小) voidsetInverted(booleanb) //设置滑块是否对齐到刻度。设置为true,则滑块最终只能在有刻度的位置取值,即滑块取值不连续。 voidsetSnapToTicks(booleanb) //用于指定将在给定值处绘制对应的标签来替代刻度数值文本的显示 voidsetLabelTable(Dictionarylabels) //添加滑块的值改变监听器 voidaddChangeListener(ChangeListenerl)
2.代码实例:默认刻度值
packagecom.xiets.swing;
importjavax.swing.*;
importjavax.swing.event.ChangeEvent;
importjavax.swing.event.ChangeListener;
publicclassMain{
publicstaticvoidmain(String[]args){
JFramejf=newJFrame("测试窗口");
jf.setSize(250,250);
jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JPanelpanel=newJPanel();
//创建一个滑块,最小值、最大值、初始值分别为0、20、10
finalJSliderslider=newJSlider(0,20,10);
//设置主刻度间隔
slider.setMajorTickSpacing(5);
//设置次刻度间隔
slider.setMinorTickSpacing(1);
//绘制刻度和标签
slider.setPaintTicks(true);
slider.setPaintLabels(true);
//添加刻度改变监听器
slider.addChangeListener(newChangeListener(){
@Override
publicvoidstateChanged(ChangeEvente){
System.out.println("当前值:"+slider.getValue());
}
});
//添加滑块到内容面板
panel.add(slider);
jf.setContentPane(panel);
jf.setVisible(true);
}
}
结果展示:
3.代码实例:自定义标签刻度值
packagecom.xiets.swing;
importjavax.swing.*;
importjavax.swing.event.ChangeEvent;
importjavax.swing.event.ChangeListener;
importjava.util.Hashtable;
publicclassMain{
publicstaticvoidmain(String[]args){
JFramejf=newJFrame("测试窗口");
jf.setSize(250,250);
jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JPanelpanel=newJPanel();
//创建一个滑块,最小值、最大值、初始值分别为0、20、10
finalJSliderslider=newJSlider(0,20,10);
//设置主刻度间隔
slider.setMajorTickSpacing(5);
//设置次刻度间隔
slider.setMinorTickSpacing(1);
//绘制刻度和标签
slider.setPaintTicks(true);
slider.setPaintLabels(true);
/*
*设置滑块方向为垂直方向
*/
slider.setOrientation(SwingConstants.VERTICAL);
/*
*给指定的刻度值显示自定义标签
*/
Hashtablehashtable=newHashtable();
hashtable.put(0,newJLabel("Start"));//0刻度位置,显示"Start"
hashtable.put(10,newJLabel("Middle"));//10刻度位置,显示"Middle"
hashtable.put(20,newJLabel("End"));//20刻度位置,显示"End"
/*
*将刻度值和自定义标签的对应关系设置到滑块(设置后不再显示默认的刻度值)
*/
slider.setLabelTable(hashtable);
//添加刻度改变监听器
slider.addChangeListener(newChangeListener(){
@Override
publicvoidstateChanged(ChangeEvente){
System.out.println("当前值:"+slider.getValue());
}
});
//添加滑块到内容面板
panel.add(slider);
jf.setContentPane(panel);
jf.setVisible(true);
}
}
结果展示:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。