Java Swing JSlider:滑块组件

news2024/11/17 12:23:00

在前面的章节中,我们介绍了 Swing 设计简单界面所需的窗口、布局组件以及如何响应事件。Swing 还提供了很多高级组件,如菜单栏、工具栏、文件选择器、表格以及树等。使用这些高级组件可以实现更为复杂的布局,也可以使程序界面更加人性化,以提高程序的灵活性。在之后的章节中,我们将开始详细介绍这些高级组件。

在学习其他高级组件之前,我们先来介绍一些布局组件,包括滑块、进度条、计时器、菜单栏和工具栏,本节我们首先来介绍滑块。

滑块(JSlider)是一个允许用户在有限区间内通过移动滑块来选择值的组件。JSlider 类的常用构造方法如表 1 所示。

构造方法说明
JSlider()创建一个范围在 0~100 且初始值为 50 的水平滑块
JSlider(BoundedRangeModel brm)使用指定的 BoundedRangeModel 创建一个水平滑块
JSlider(int orientation)使用指定的方向创建一个滑块,范围在 0~100 且初始值为 50
JSlider(int min,int max)使用指定的最小值和最大值来创建一个水平滑块,初始值等于最小值加上最大值的平均值
JSlider(int min,int max,int value)用指定的最小值、最大值和初始值创建一个水平滑块

例如,创建一个最小值为 30,最大值为 120,初始值为 55 的水平滑块的语句如下所示。

  1. JSIider slider=new JSIider(30,120,55);

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

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

JSIider 类常用方法如表 2 所示。

方法名称说明
createStandardLabels(int increment)创建一个数字文本标签的 Hashtable,从滑块最小值处开始增加,并使用指定的增量
getLabelTable()返回哪些标签在哪些刻度绘制的字典
getMaj orTickSpacing()返回主刻度标记的间隔
getMaximum()从 BoundedRangeModel 返回滑块所支持的最大值
getMinimum()从 BoundedRangeModel 返回滑块所支持的最小值
getMinorTickSpacing()返回次刻度标记的间隔
getSnapToTicks()如果滑块(及其所表示的值)解析为最靠近用户放置滑块处的刻度标记的值,则返回为 true
getValue()从 BoundedRangeModel 返回滑块的当前值
setLabelTable(Dictionary labels)用于指定将在给定值处绘制哪个标签
setMaj orTickSpacing(int n)此方法设置主刻度标记的间隔
setMaximum(int maximum)将滑块的最大值设置为 maximum
setMinimum(int minimum)将滑块的最小值设置为 minimum
setMinorTickSpacing(int n)设置次刻度标记的间隔
setOrientation(int orientation)将滑块的方向设置为 SwingConstants.VERTICAL 或 SwingConstants.HORIZONTAL
setPaintLabels(boolean b)确定是否在滑块上绘制标签
setPaintTicks(boolean b)确定是否在滑块上绘制刻度标记
setPaintTrack(boolean b)确定是否在滑块上绘制滑道
setSnapToTicks(boolean b)指定为 true,则滑块(及其所表示的值)解析为最靠近用户放置滑块处的刻度标记的值
setValue(int n)将滑块的当前值设置为 n

例 1

在了解 JSIider 类的基础语法之后,下面创建一个滑块实例。实例非常简单,仅仅包含一个滑块,实例源代码如下所示。

  1. package ch18;
  2. import java.awt.Container;
  3. import javax.swing.JFrame;
  4. import javax.swing.JSlider;
  5. public class JSliderDemo
  6. {
  7. public static void main(String[] agrs)
  8. {
  9. JFrame frame=new JFrame("滑块组件示例");
  10. frame.setSize(100,100);
  11. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  12. Container contentPane=frame.getContentPane();
  13. JSlider slider=new JSlider(0,100);
  14. slider.setMajorTickSpacing(10);
  15. slider.setMinorTickSpacing(5);
  16. slider.setPaintLabels(true);
  17. slider.setPaintTicks(true);
  18. contentPane.add(slider);
  19. frame.setVisible(true);
  20. }
  21. }

上述代码首先创建一个 JFrame 窗口并进行必要属性设置,接着创建一个 JSIider 对象,设置最小值为 0,最大值为 100,然后设置滑块对象的刻度值。运行此时的实例程序,效果如图 1 所示。

如果需要在滑块上添加刻度或标签,可以在“contentPane.add(slider);”前添加下面两行语句:

  1. slider.setPaintLabels(true);
  2. slider.setPaintTicks(true);

再次运行程序,此时滑块的运行效果如图 2 所示。


图2 具有刻度和标签的滑块

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/107624.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

颜色分析.

介绍 宽光谱光源对许多光学系统都很重要,应用范围包括白光照明、分光计等。Fred中的颜色图像分析,是通过计算每个像素的色度坐标并在表面上显示生成的RGB值来生成颜色分布。此外,FRED还可以显示彩色色度图,并在用户移动光标时指…

CSS -- CSS选择器精讲(基础选择器,符合选择器,属性选择器,结构伪类选择器,伪选择器)

文章目录1 CSS基础选择器1.1 选择器的分类1.2 标签选择器1.3 类选择器1.4 id选择器1.5 通配符选择器1.6 基础选择器总结2 CSS的复合选择器2.1 什么是复合选择器2.2 后代选择器2.3 子选择器2.4 并集选择器2.5 伪类选择器2.6 链接伪类选择器2.7 :focus 伪类选择器2.8 复合选择器总…

正点原子-Linux嵌入式开发学习-第二期04

第十一讲:BSP工程管理 BSP管理其实就是以前学stm32一样的单独为led写.h和.c,并且文件夹有很多种 使用ubuntu的vscode创建bsp文件 第一步:新建bsp文件夹,在bsp文件夹新建各个外设或者功能的文件夹(一定是在相应的文件夹…

nodejs+vue+elementui鲜花销售商城管理系统410

前台: (1) 用户注册:用户名,密码,确认密码,邮箱,手机号,真实姓名,收货地址 (2) 用户登录:用户名,密码,验证码 登录后在主页显示欢迎信息&am…

2022年保险行业和产品研究报告

第一章 行业概况 保险业是经营风险的特殊行业。保险是以契约形式确立双方经济关系,以缴纳保险费建立起来的保险基金,对保险合同规定范围内的灾害事故所造成的损失,进行经济补偿或给付的一种经济形式。 保险是专门以风险为经营对象、为人们提…

RK3568开发环境搭建

前面我给大家展示了RK3568的开发板,但是并没有对RK3568的芯片资源进行描述,这里简单给大家看下该芯片的资源,具体的请看瑞芯微官网https://www.rock-chips.com/ 对芯片有了写了解之后,下面就开始搭建开发环境,让我们早…

Databend 开源周报 #72

Databend 是一款强大的云数仓。专为弹性和高效设计,自由且开源。 即刻体验云服务:https://app.databend.com。 What’s New 探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。 Features & Improvements Multiple Catalogs …

操作系统:虚拟存储器 练习题(带有答案和解析)

文章目录1.虚拟存储器概述1.1.常规存储管理方式的特征和局部性原理1.2.虚拟存储器的定义和特征1.3.虚拟存储器的实现方法2.请求分页存储管理方式2.1.请求分页中的硬件支持2.2.请求分页中的内存分配3.页面置换算法3.1.最佳置换算法和先进先出置换算法3.2.最近最久未使用和最少使…

Spring事件处理

在实际业务开发中,有时候复杂性的业务之间需要解耦,常用的方法:同步、异步、MQ。但 MQ 重啊,非必要不提升架构复杂度。 针对同步和异步使用方式:1.定时器 2.Spring Event. Spring Event: 观察者…

网站反爬指南:政府网站篇

目录 前言 黑灰产为何盯上政务网站? 如何反爬? 前言 网络爬虫正在成为政务网站们最大的威胁之一。 随着网络安全被提升到国家层面,网站安全管理和防护日趋重要,政务网站既要确保网站信息的及时和准确,又要能应对网络…

15. Spring事务管理

1. Spring事务简介 事务作用:在数据层保障一系列的数据库操作同成功同失败Spring事务作用:在数据层或**业务层**保障一系列的数据库操作同成功同失败 2. 案例 2.1 需求和分析 需求:实现任意两个账户间转账操作需求微缩:A账户减…

如何使用 SAP OData 服务向 ABAP 服务器上传文件试读版

本教程到目前为止开发的 OData 图书管理服务,可以在 ABAP 系统里对图书数据进行增删改查。 本步骤我们继续介绍如何通过 SAP OData 服务,实现向 ABAP 系统上传文件的需求。我们采取 Postman 进行文件上传。 先看一下通过本文介绍的步骤,实现…

word基础功能应用:带圈字符如此妙法,好玩有趣

很多人把Word当成码字的记事本,其实它的逆天操作,远比你想象得还要强大。比如,Word中的“带圈字符”功能。 01、基本用法 Word中,点击【开始】-【带圈字符】按钮,即可启用“带圈字符”功能。 比如,我们可…

自然语言处理学习笔记-lecture10-机器翻译01

机器翻译的产生与发展 机器翻译 (machine translation, MT) 是用计算机把一种语言(源语言, source language) 翻译成另一种语言(目标语言, target language) 的一门学科和技术。 机器翻译的困难如下: 自然语言中普遍存在的歧义和未知现象机器翻译不仅仅是字符串的…

Spring IOC和Bean生命周期以及源码分析

这篇文章主要讲解 IOC 容器的创建过程,让大家对整体有一个全局的认识,文章目录如图: 1. 基础知识 1.1 什么是 Spring IOC ? IOC 不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦…

springboot小区物业管理系统maven idea1562

本小区物业管理系统以springboot作为框架,以MySql作为后台运行的数据库,使用Tomcat用为系统的服务器,同时使用JSP显示业主界面。本系统主要包括以下功能模块:个人中心、业主管理、费用缴纳管理、疫情防控管理、小区车位管理、车位…

基于 Traefik 的 Basic Auth 配置

前言 Traefik是一个现代的HTTP反向代理和负载均衡器,使部署微服务变得容易。 Traefik可以与现有的多种基础设施组件(Docker、Swarm模式、Kubernetes、Marathon、Consul、Etcd、Rancher、Amazon ECS...)集成,并自动和动态地配置自…

Allegro如何快速统计串阻前后端的长度操作指导

Allegro如何快速统计串阻前后端的长度操作指导 Allegro可以快捷的统计出串阻前后端的长度,并且归一到一个网络中,方便查看 比如需要统计1-3的总长 具体操作如下 选择Analyze-Model Assignment出现SI Design Audit窗口,直接点击ok<

CSS -- CSS3中3D转换相关属性讲解(translate3d,rotate3d,perspective,transform-style)

文章目录3D转换1 三维坐标系2 3D移动 translate3d3 透视 perspective4 3D 旋转 rotate3d5 3D旋转 rotate3d6 3D呈现 transform-style7 3D案例3D转换 我们生活的环境是3D的&#xff0c;照片就是3D物体在2D平面呈现的例子。 3D特点&#xff1a; 近大远小。物体后面遮挡不可见 …

[论文阅读] PointSeg: Real-Time Semantic Segmentation Based on 3D LiDAR Point Cloud

文章目录1. 主要思想2. 具体方法2.1 数据投影2.2 网络结构3. 实验支撑4. 总结启示5. 相关文献paper 原论文的链接 code: 源代码链接 67.4 (car) 19.2(ped) 32.7(cyclist)|90 fps/GPU 1. 主要思想 通过什么方式&#xff0c;解决了什么问题 在SqueezeSeg的基础上&#xff0c;利用…