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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。