Swing滑块组件的使用

让人想犯罪 __ 提交于 2019-12-19 01:23:45

滑块是程序中的一种常见组件,比如调节音量的滑块,音乐播放器的进度滑块等。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);     

	}

}

在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!