JavaSwing中的容器之--JScrollPane

news2025/5/17 8:09:22

JavaSwing中的容器之–JScrollPane

在Java Swing中,容器是用于容纳其他组件(如按钮、标签等)的组件。Swing提供了多种容器,它们可以嵌套使用以创建复杂的用户界面。
JScrollPane是一个轻量级组件,提供可滚动视图。JScrollPane 基本上由 滚动条、视口(要显示滚动条的组件)、以及它们之间的接线组成。可以通过以下图直观了解,以官方说明文档为准,个人理解可能有偏差。

在这里插入图片描述

一、构造方法

JScrollPane类提供了4个构造方法用来创建滚动视图。

方法名称功能描述
JScrollPane()创建一个空的(无视口视图)JScrollPane,其中水平和垂直滚动条在需要时出现。
JScrollPane(int vsbPolicy, int hsbPolicy)使用指定的滚动条策略创建一个空的(无视口视图)JScrollPane。
JScrollPane(Component view)创建一个 JScrollPane 来显示指定组件的内容,只要组件的内容大于视图,水平和垂直滚动条就会出现。
JScrollPane(Component view, int vsbPolicy, int hsbPolicy)创建一个 JScrollPane 在视口中显示视图组件,其视图位置可以用一对滚动条控制。

构造方法参数解释:

  • vsbPolicy:垂直滚动条策略,取值是JScrollPane的常数。
  • hsbPolicy:水平滚动条策略,取值是JScrollPane的常数。
  • Componet view:view是要添加滚动条的组件
二、常用方法

JScrollPane提供了丰富的方法用,能完成设置策略、设置滚动条策略、获取滚动条策略值、设置滚动条、设置视图等功能。常见的方法如下表所示。

方法名称功能描述
setHorizontalScrollBarPolicy(int policy)确定水平滚动条何时出现在滚动窗格中。
setVerticalScrollBarPolicy(int policy)确定垂直滚动条何时出现在滚动窗格中。
setViewportView(Component view)设置视图(指定哪个组件显示滚动条)
setWheelScrollingEnabled(boolean handleWheel)启用/禁用响应鼠标滚轮移动的滚动。
setViewport(JViewport viewport)添加或更新视
setViewportBorder(Border viewportBorder)在视口周围添加边框。
setColumnHeaderView(Component view)如有必要,创建列标题视口,设置其视图,然后将列标题视口添加到滚动窗格。
setRowHeaderView(Component view)如有必要,创建行标题视口,设置其视图,然后将行标题视口添加到滚动窗格。
setColumnHeader(JViewport columnHeader)删除旧的 columnHeader(如果存在);如果新的 columnHeader 不是 null ,则将其 viewPosition 的 x 坐标与视口(如果有的话)同步,然后将其添加到滚动窗格。
三、功能详解
1.构造方法创建滚动面板
// 创建一个无视口的ScrollPane对象
JScrollPane  scrollPane1 = new JScrollPane();

// 创建一个ScrollPane对象,并设置水平和垂直滚动条始终显示
JScrollPane scrollPane2 = new JScrollPane(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS,
                                          JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

// 创建一个包含指定文本区域作为视口的ScrollPane对象
JScrollPane scrollPane3 = new JScrollPane(textArea);//textArea是文本区域对象

// 创建一个包含指定文本区域作为视口的ScrollPane对象,并设置水平和垂直滚动条始终显示
JScrollPane scrollPane4 = new JScrollPane(textArea,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS,
                                          JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
2.设置视口

调用方法setViewportView(Component view)可以设置滚动视图的视口,如果构造方法创建视图时已指定视口,该方法会替换已有视口,起到更新作用。

//创建空面板,通过setViewportView()设置视图
JScrollPane scrollPane = new JScrollPane();//创建一个空的滚动面板
scrollPane.setViewportView(textArea);//textArea是一个文本区域对象
scrollPane.setBounds(50, 20, 200, 200);//设置滚动面板的位置及大小
3.设置滚动条策略

在滚动面板中可显示水平滚动条、垂直滚动条,通过设置其策略显示滚动条。

设置水平滚动条策略

  • JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS:总是显示
  • JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED:根据需要显示
  • JScrollPane.HORIZONTAL_SCROLLBAR_NEVER):从不显示
// 设置滚动面板的水平滚动条策略为始终显示
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
// 设置滚动面板的水平滚动条策略为按需显示
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
// 设置滚动面板的水平滚动条策略为从不显示
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);

设置垂直滚动条策略

  • JScrollPane.VERTICAL_SCROLLBAR_ALWAYS):总是显示
  • JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED):根据需要显示
  • JScrollPane.VERTICAL_SCROLLBAR_NEVER):从不显示
//设置滚动面板的垂直滚动条策略为始终显示
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
// 设置滚动面板的垂直滚动条策略为按需显示
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
// 设置滚动面板的垂直滚动条策略为从不显示
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);
4.更新视口
// 创建一个新的JPanel对象作为滚动面板的视口
JPanel viewport = new JPanel();
// 将文本区域添加到视口中
viewport.add(new JTextArea(10,10));
// 将视口设置到滚动面板中,以便滚动面板可以显示视口中的内容
scrollPane.setViewportView(viewport);

在这里插入图片描述

5.为视口设置边框
// 为滚动面板的视口设置边框
scrollPane.setViewportBorder(BorderFactory.createLineBorder(Color.BLUE));

在这里插入图片描述

6. 设置列标题、行标题
Label  columnHeaderViewport = new JLabel("这是列标题");
scrollPane.setColumnHeaderView(columnHeaderViewport);//scrollpane是滚动面板对象
JLabel  rowHeaderViewport = new JLabel("这是行标题n");
scrollPane.setRowHeaderView(rowHeaderViewport);

在这里插入图片描述

7.设置滚动条颜色
// 获取滚动面板的垂直滚动条
JScrollBar vscrollBar = scrollPane.getVerticalScrollBar();
// 设置垂直滚动条的背景颜色
vscrollBar.setBackground(new Color(164,68,223));
// 获取滚动面板的水平滚动条
JScrollBar hscrollBar = scrollPane.getHorizontalScrollBar();
// 设置水平滚动条的背景颜色
hscrollBar.setBackground(new Color(255,150,113));

在这里插入图片描述

8.设置滚动条单次滚动增量

获取水平或垂直滚动条,调用其setUnitIncrement( int )方法设置滚动增量,调整滚动速度

//设置滚动条的单次滚动增量,以调整滚动速度
JScrollPane scrollPane = new JScrollPane();//创建一在这里插入代码片个空的滚动面板
scrollPane.setViewportView(textArea);//textgArea是文本域对象
scrollPane.setBounds(50, 20, 200, 200);
JScrollBar vscrollBar = scrollPane.getVerticalScrollBar();//获取垂直滚动条
vscrollBar.setUnitIncrement(10);//设置单次增量为10
9.启动鼠标滚轮滚动功能

启用滚动条的鼠标滚轮滚动功能,以允许用户通过鼠标滚轮来滚动内容

scrollPane.setWheelScrollingEnabled(true);
四、总结

JScrollPane主要由滚动条、视口组成。

可以根据需要完成更新视口、设置滚动条颜色、滚动增量、设置角组件、增设边框等操作。若想对滚动条有更多的操作,可查看官方文档对JScrollBar的介绍,或者查阅作者关于JScrollBar的用法介绍。

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

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

相关文章

使用 Cookie 实现认证跳转功能

使用 Cookie 实现认证跳转功能的实践与解析 在 Web 开发中,用户身份认证是一个基础而关键的功能点。本文将通过一个简单的前后端示例系统,介绍如何基于 Cookie 实现 Token 保存与自动跳转认证的功能,并结合 Cookie 与 Header 的区别、使用场…

LED接口设计

一个LED灯有3种控制状态,常亮、常灭和闪烁,要做到这种控制最简单的一种方法是使用任何一款处理器的普通IO去控制。 用IO控制方式有两种,一种是高有效,如下图1所示IO口为高电平时LED亮,IO为低电平时LED不亮。IO口出一个…

SpringBoot项目使用POI-TL动态生成Word文档

近期项目工作需要动态生成Word文档的需求,特意调研了动态生成Word的技术方案。主要有以下两种: 第一种是FreeMarker模板来进行填充;第二种是POI-TL技术使用Word模板来进行填充; 以下是关于POI-TL的官方介绍 重点关注&#xff1…

YOLOv3深度解析:多尺度特征融合与实时检测的里程碑

一、YOLOv3的诞生:继承与突破的起点 YOLOv3作为YOLO系列的第三代算法,于2018年由Joseph Redmon等人提出。它在YOLOv2的基础上,针对小目标检测精度低、多类别标签预测受限等问题进行了系统性改进。通过引入多尺度特征图检测、残差网络架构和独…

uniapp-商城-60-后台 新增商品(属性的选中和页面显示)

前面添加了属性,添加属性的子级项目。也分析了如何回显,但是在添加新的商品的时,我们也同样需要进行选择,还要能正常的显示在界面上。下面对页面的显示进行分析。 1、界面情况回顾 属性显示其实是个一嵌套的数据显示。 2、选中的…

虹科技术 | 简化汽车零部件测试:LIN/CAN总线设备的按键触发功能实现

汽车零部件测试领域对操作的便捷性要求越来越高,虹科Baby-LIN-RC系列产品为这一需求提供了完美的解决方案。从基础的按键设置到高级的Shift键应用,本文将一步步引导您了解虹科Baby-LIN-RC系列产品的智能控制之道。 虹科Baby-LIN-3-RC 想象一下&#xff0…

单片机ESP32天气日历闹铃语音播报

自制Arduino Esp32 单片机 可以整点语音播报,闹铃语音播报,农历显示,白天晚上天气,硬件有 Esp32,ST7789显示屏,Max98357 喇叭驱动,小喇叭一枚。有需要源码的私信我。#单片机 #闹钟 #嵌入式 #智能…

如何解决LCMS 液质联用液相进样器定量环漏液问题

以下是解决安捷伦1260液相色谱仪为例的进样器定量环漏液问题的一些方法:视频操作 检查相关部件 检查定量环本身:观察定量环是否有破损、裂纹或变形等情况。如果发现定量环损坏,需及时更换。检查密封垫:查看进样阀的转子密封垫、计…

服务器内部可以访问外部网络,docker内部无法访问外部网络,只能docker内部访问

要通过 iptables 将容器中的特定端口请求转发到特定服务器,你需要设置 DNAT(目标地址转换)规则。以下是详细步骤: 假设场景 容器端口: 8080(容器内服务监听的端口)目标服务器: 192.168.1.100(请…

PCIe Switch 问题点

系列文章目录 文章目录 系列文章目录完善PCIe Retimer Overview Document OutlineSwitch 维度BroadComMicroChipAsmedia 祥硕Cyan其他 完善 Functional block diagram,功能框图Key Features and Benefits,主要功能和优点Fabric 链路Multi-root PCIe Re…

开源轻量级地图解决方案leaflet

Leaflet 地图:开源轻量级地图解决方案 Leaflet 是一个开源的 JavaScript 库,用于在网页中嵌入交互式地图。它以轻量级、灵活性和易用性著称,适用于需要快速集成地图功能的项目。以下是关于 Leaflet 的详细介绍和使用指南。 1. Leaflet 的核心…

Flutter目录结构介绍、入口、Widget、Center组件、Text组件、MaterialApp组件、Scaffold组件

目录 1. 创建Flutter项目 1.1使用Android Studio创建Flutter项目 1.2 使用命令行创建Flutter项目 2. Flutter项目介绍 2.1所有代码都在lib目录下编写 2.1 pubspec.yaml 依赖库/图片的引用 ​编辑 3. 运行项目 4. 编写mian.dart文件 4.1 使用MaterialApp 和 Scaffold两个组件…

如何实现金蝶云星空到MySQL的数据高效集成

金蝶云星空数据集成到MySQL的技术案例分享 在企业信息化建设中,数据的高效流动和准确处理是关键。本文将聚焦于一个具体的系统对接集成案例:金蝶云星空的数据集成到MySQL,方案名称为“xsck-2金蝶销售出库-->mysql”。通过这一案例&#x…

院校机试刷题第四天:1911反转公约数、1702十六进制不进位加法

一、1911反转公约数 1.题目描述 2.解题思路 两个关键点:1.如何把数字反转,2.如何求最大公约数。 反转:用字符串形式存储,定义一个新的字符串倒序存储反转之后的字符串,将字符串按位转换位数字。 求最大公约数&…

Redis解析

Redis解析 一、单线程模型 redis在io层面是多线程的,在数据处理层面是单线程的。 多线程一般用于: 关闭连接删除/淘汰内存网络IO 1.1 io多路复用 redis使用nio(select、poll、epoll)的方式处理socket 主线程负责接收建立连接…

2025年Ai写PPT工具推荐,这5款Ai工具可以一键生成专业PPT

上个月给客户做产品宣讲时,我对着空白 PPT 页面熬到凌晨一点,光是调整文字排版就改了十几版,最后还是被吐槽 "内容零散没重点"。后来同事分享了几款 ai 写 PPT 工具,试完发现简直打开了新世界的大门 —— 不用手动写大纲…

css:倒影倾斜效果

这是需要实现的效果,平时用的比较多的是添加阴影,是box-shadow,而添加倒影是box-reflect,需要注意的是box-reflect需要添加浏览器前缀,比如我用的谷歌浏览器,要加-webkit-才能生效。 -webkit-box-reflect:…

语音识别——通过PyAudio录入音频

PyAudio 是一个用于处理音频的 Python 库,它提供了录制和播放音频的功能。通过 PyAudio,可以轻松地从麦克风或其他音频输入设备录制音频,并将其保存为文件或进行进一步处理。 安装 PyAudio 在使用 PyAudio 之前,需要先安装它。可…

五月月报丨MaxKB在教育行业的应用进展与典型场景

在2025年的3月和4月的“用户应用月度报告”中,MaxKB开源项目组相继总结了MaxKB开源项目在政府、公共事业、教育、医疗以及企事业单位的应用情况。毫无疑问,在DeepSeek等国产大模型被各行各业的用户广泛接受之后,AI应用建设并运营的步伐也在显…

【流程控制结构】

流程控制结构 流程控制结构1、顺序结构2、选择结构if基本选择结构if else语法多重if语法嵌套if语法switch选择结构 3、循环结构循环结构while循环结构程序调试for循环跳转语句区别 流程控制结构 1、顺序结构 流程图 优先级 2、选择结构 if基本选择结构 单if 语法 if&…