当前位置: 首页 > ops >正文

JavaSwing中的容器之--JScrollPane

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.xdnf.cn/news/6537.html

相关文章:

  • C++23:ranges::iota、ranges::shift_left和ranges::shift_right详解
  • 在 Neo4j 中实现向量化存储:从文本到高效语义搜索
  • 【爬虫】DrissionPage-4
  • h5,原生html,echarts关系网实现
  • 降低学习成本,1 天掌握 Java 开发核心技能
  • 【带文档】网上点餐系统 springboot + vue 全栈项目实战(源码+数据库+万字说明文档)
  • 《AI大模型应知应会100篇》第66篇:用大模型 + 向量数据库构建你的个性化知识库系统(附实战代码)
  • FPGA: XILINX Kintex 7系列器件的架构
  • 广州附医华南医院MDT团队新技术赋能「睡眠障碍治疗」:告别单一、反复、不对症,实现精准快速起效!
  • 架构选择、区别
  • C++动态内存分配
  • MySQL高可用
  • GEE计算 RSEI(遥感生态指数)
  • 无损耗协议:PROFINET和EtherNet IP网关的高效安装指南
  • SSH主机密钥验证失败:全面解决方案与技术手册
  • 2025-5-16Vue3快速上手
  • 填孔即可靠:猎板PCB如何用树脂塞孔重构高速电路设计规则
  • 从前序与中序遍历序列构造二叉树(中等)
  • 【linux】Web服务—搭建nginx+ssl的加密认证web服务器
  • Ubuntu快速安装Python3.11及多版本管理
  • 项目版本管理和Git分支管理方案
  • Android 中 显示 PDF 文件内容(AndroidPdfViewer 库)
  • 计算机图形学编程(使用OpenGL和C++)(第2版)学习笔记 10.增强表面细节(二)法线贴图
  • SpringCloud微服务开发与实战
  • 官方 Elasticsearch SQL NLPChina Elasticsearch SQL
  • [特殊字符][特殊字符]知识库PHP版 | ChatMoneyAI宝塔面板Docker多部署
  • Java EE初阶——wait 和 notify
  • CentOS高手之路:从进阶实战到企业级优化
  • 维智定位 Android 定位 SDK
  • 网站运维基础 | 2. cms介绍及wordpress的搭建