java滑块_Java Swing JSlider滑块的实现示例

news/2024/7/8 3:14:40

1. 概述

JSlider,滑块。

以图形方式在有界区间内通过移动滑块来选择值的组件。

滑块可以显示主刻度标记以及主刻度之间的次刻度标记。刻度标记之间的值的个数由 setMajorTickSpacing(int) 和 setMinorTickSpacing(int) 来控制。刻度标记的绘制由 setPaintTicks(boolean) 控制。

滑块也可以在固定时间间隔(或在任意位置)沿滑块刻度打印文本标签。标签的绘制由 setLabelTable(Dictionary) 和 setPaintLabels(boolean) 控制。

PS: 当滑块获得焦点后,按键盘上的 上下左右键 也可以滑动滑块。

JSlider 常用构造方法:

/**

* 参数说明:

* orientation: 滑块的方向,SwingConstants.VERTICAL 或 SwingConstants.HORIZONTAL,默认为水平方向

* min: 滑块的最小值

* max: 滑块的最大值

* value: 滑块的初始值(默认为 最小值 和 最大值 之间的 中间值)

*/

JSlider()

JSlider(int orientation) // 默认的最小值、最大值、初始值值 分别为 0, 100, 50

JSlider(int min, int max) // 默认初始值为 min 和 max 之间的 中间值

JSlider(int min, int max, int value)

JSlider(int orientation, int min, int max, int value)

JSlider 常用方法:

// 设置滑块的 最小值、最大值、当前值

void setMinimum(int min)

void setMaximum(int max)

void setValue(int n)

// 获取滑块的当前值

int getValue()

// 设置 主刻度标记间隔

void setMajorTickSpacing(int n)

// 设置单个主刻度内的 次刻度标记间隔

void setMinorTickSpacing(int n)

// 设置是否绘制 刻度线

void setPaintTicks(boolean b)

// 设置是否绘制 刻度标签(刻度值文本)

void setPaintLabels(boolean b)

// 设置是否绘制 滑道

void setPaintTrack(boolean b)

// 设置滑块的方向,SwingConstants.VERTICAL 或 SwingConstants.HORIZONTAL

void setOrientation(int orientation)

// 设置是否颠倒刻度值(刻度值从大到小)

void setInverted(boolean b)

// 设置滑块是否对齐到刻度。设置为 true,则滑块最终只能在有刻度的位置取值,即滑块取值不连续。

void setSnapToTicks(boolean b)

// 用于指定将在 给定值处 绘制 对应的标签 来替代刻度数值文本的显示

void setLabelTable(Dictionary labels)

// 添加滑块的值改变监听器

void addChangeListener(ChangeListener l)

2. 代码实例: 默认刻度值

package com.xiets.swing;

import javax.swing.*;

import javax.swing.event.ChangeEvent;

import javax.swing.event.ChangeListener;

public class Main {

public static void main(String[] args) {

JFrame jf = new JFrame("测试窗口");

jf.setSize(250, 250);

jf.setLocationRelativeTo(null);

jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

JPanel panel = new JPanel();

// 创建一个滑块,最小值、最大值、初始值 分别为 0、20、10

final JSlider slider = new JSlider(0, 20, 10);

// 设置主刻度间隔

slider.setMajorTickSpacing(5);

// 设置次刻度间隔

slider.setMinorTickSpacing(1);

// 绘制 刻度 和 标签

slider.setPaintTicks(true);

slider.setPaintLabels(true);

// 添加刻度改变监听器

slider.addChangeListener(new ChangeListener() {

@Override

public void stateChanged(ChangeEvent e) {

System.out.println("当前值: " + slider.getValue());

}

});

// 添加滑块到内容面板

panel.add(slider);

jf.setContentPane(panel);

jf.setVisible(true);

}

}

结果展示:

7e0825889193241f940aa86a885de1c6.gif

3. 代码实例: 自定义标签刻度值

package com.xiets.swing;

import javax.swing.*;

import javax.swing.event.ChangeEvent;

import javax.swing.event.ChangeListener;

import java.util.Hashtable;

public class Main {

public static void main(String[] args) {

JFrame jf = new JFrame("测试窗口");

jf.setSize(250, 250);

jf.setLocationRelativeTo(null);

jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

JPanel panel = new JPanel();

// 创建一个滑块,最小值、最大值、初始值 分别为 0、20、10

final JSlider slider = new JSlider(0, 20, 10);

// 设置主刻度间隔

slider.setMajorTickSpacing(5);

// 设置次刻度间隔

slider.setMinorTickSpacing(1);

// 绘制 刻度 和 标签

slider.setPaintTicks(true);

slider.setPaintLabels(true);

/*

* 设置滑块方向为垂直方向

*/

slider.setOrientation(SwingConstants.VERTICAL);

/*

* 给指定的刻度值显示自定义标签

*/

Hashtable hashtable = new Hashtable();

hashtable.put(0, new JLabel("Start")); // 0 刻度位置,显示 "Start"

hashtable.put(10, new JLabel("Middle")); // 10 刻度位置,显示 "Middle"

hashtable.put(20, new JLabel("End")); // 20 刻度位置,显示 "End"

/*

* 将刻度值和自定义标签的对应关系设置到滑块(设置后不再显示默认的刻度值)

*/

slider.setLabelTable(hashtable);

// 添加刻度改变监听器

slider.addChangeListener(new ChangeListener() {

@Override

public void stateChanged(ChangeEvent e) {

System.out.println("当前值: " + slider.getValue());

}

});

// 添加滑块到内容面板

panel.add(slider);

jf.setContentPane(panel);

jf.setVisible(true);

}

}

结果展示:

ffce19b25dc064126d4cfdac67b73e12.gif

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。


http://www.niftyadmin.cn/n/3528579.html

相关文章

java 本地事务_java事务(二)——本地事务

本地事务事务类型事务可以分为本地事务和分布式事务两种类型。这两种事务类型是根据访问并更新的数据资源的多少来进行区分的。本地事务是在单个数据源上进行数据的访问和更新,而分布式事务是跨越多个数据源来进行数据的访问和更新。在这里要说的事务是基于数据库这…

fitnesse java_从Fitnesse中学习Java单元测试

从第一次知道Fitnesse这个集成测试工具到现在也已经差不多有2年多的时间了。在这个期间把Fitnesse的源码也算是反反复复阅读了很多遍,算是对其实现的原理和方法有所了解。在最近一次对Fitnesse最新版本代码的研究中我发现,Fitnesse除了是一个很好的开源集…

java 获得basepath_JavaWeb项目获取绝对路径basePath

1. freemarker获取系统相对路径方式spring-mvc.xml 中配置其中是关键。ftl页面中设置首页js文件中获取pathvar base document.getElementById("base").href;// 与后台交互_send function(async, url, value, success, error) {$.ajax({async : async,url : base /…

java 分析工具_java分析工具

java分析工具jinfojstatjmapjstack1.jinfo查看java进程的扩展参数-flag 查看某个jvm参数-flag /- 动态开启或关闭部分jvm参数-flag namevalue 修改部分jvm参数flags 查看所有jvm参数-sysprops 查看系统参数(System.getProperties())①-flag 查看某个jvm参数jvm参数②flag /- 动…

Java web登录拦截器_SpringMVC拦截器实现登录认证

博客以Demo的形式讲诉拦截器的使用项目结构如图:需要的jar:有springMVC配置需要的jar和jstl需要的jarSpringMVC包的作用说明:aopalliance.jar:这个包是AOP联盟的API包,里面包含了针对面向切面的接口。通常spring等其它具备动态织入功能的框架…

java 文件备注_java文档注释:

java支持三种注释方式,前两种分别是//和/* */,第三种被称作说明注释,它以/**开始,以*/结束.说明注释允许你在程序中嵌入关于程序的信息,你可以使用javadoc工具软件来生成信息,并输出到html文件中。说明注释,使你更加方便的记录你的…

java 访问私有成员_javap反编译探寻内部类为何能访问外部私有成员

Java语言理论告诉我们内部类对象持有外部类对象的一个引用,这说明内部类与外部类还是独立的两个类,只不过内部类对象通过持有外部类的对象的引用来维持这个关系。通常任何一个类都不可能访问另一个类的私有成员,那么内部类是如何做到访问外部…

java dblink_Oracle中dblink的实际应用示例详解

前言本文介绍的是关于Oracle同义词dblink的实际应用,下面话不多说了,来一起看看详细的介绍吧。业务需求:原数据库(10.2.0.4.0),新数据库(11.2.0.3)由于程序的需求原因,现在需要把新库上的某个用户直接映射到老库用户下…