如何使 JScrollPane 中的垂直和水平滚动条居中?

2023-12-03

我有一个 JPanel,其中有一个 JLabel,已添加到 JScrollPane 中。我有一个调用的actionListenerJLabel.setIcon("file.jpg");。图像正确显示在 JScrollPane 中并且为全尺寸。滚动条完美显示。我试图默认将垂直和水平滚动条定位在中心,这样您默认就会看到图像的中心。

是否有 JScrollPane 方法可以将视口定位在图像的中心?或者我可以手动将每个滚动条的位置设置为最大尺寸除以 2?

我努力了

JScrollPane.getVerticalScrollBar().setValue(JScrollPane.getVerticalScrollBar().getMaximum() / 2);

当它编译时,它不会使滚动条居中。我还尝试将 JPanel 的布局管理器设置为 GridBagLayout,但这也不起作用。


基本上,您需要知道视口可视区域的大小。

Rectangle bounds = scrollPane.getViewport().getViewRect();

然后您需要组件的大小,但是一旦将其添加到滚动窗格,您就可以从视图端口获取它......

Dimension size = scrollPane.getViewport().getViewSize();

现在您需要计算中心位置......

int x = (size.width - bounds.width) / 2;
int y = (size.height - bounds.height) / 2;

然后你需要简单地调整视口位置......

scrollPane.getViewport().setViewPosition(new Point(x, y));

现在,请记住,只有在屏幕上实现滚动窗格(或者至少将其布局在其父容器中)后,这才会起作用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使 JScrollPane 中的垂直和水平滚动条居中? 的相关文章

  • Java 的 System.arraycopy() 对于小数组有效吗?

    是Java的System arraycopy 对于小数组来说是高效的 或者它是本机方法这一事实是否使其可能比简单的循环和函数调用效率低得多 本机方法是否会因跨越某种 Java 系统桥梁而产生额外的性能开销 稍微扩展一下 Sid 所写的内容
  • Infinispan 复制缓存不复制对象以供读取

    我们正在尝试在 Openshift 内的 Wildfly 11 上运行的两个 infinispan 节点上安装复制缓存 当我们在一个节点上写入一个对象时 它不会显示在另一节点上进行读取 启动时 节点在集群中连接 并且可以看到彼此 如日志中所
  • 使用 Java 检索 Window 进程的 CPU 使用率

    我正在寻找一个 Java 解决方案来查找 Windows 中正在运行的进程的 CPU 使用情况 查了一下网上 关于Java解决方案的信息似乎很少 请记住 我并不是要查找 JVM 的 CPU 使用情况 而是要查找当时在 Windows 中运行
  • 如何使用 Gradle 2.10 将 ANTLR 词法分析器语法导入到另一个语法中?

    我一直在和 Terence Parr 一起学习 ANTLR 4权威的 ANTLR 4 参考 到目前为止我一直在使用 Gradle 2 10 及其内置 ANTLR 插件进行跟踪 然而 我在获取一些我从第 4 章第 38 41 页改编的代码以使
  • 将位于 jar 中的文件读取为 java.io.File 对象

    与此类似的问题已发布 但似乎没有一个答案对我的情况有帮助 我正在编写一个程序包 它使用 Google 的凭据来获取 Google Apps 用户 为此 我使用服务帐户 因此为了检索凭据 我需要提供 除其他外 一个 p12 签名文件 Cred
  • 为什么不能将 String 添加到 List 类型?

    错误 The method add capture 1 of in the type List
  • java“类文件包含错误的类”错误

    我正在尝试制作一个控制台应用程序来测试我的网络服务 我成功部署了一个网络服务http localhost 8080 WS myWS http localhost 8080 WS myWS我用 wsimport 制作了代理类 wsimport
  • AIX:IBM Java:java.net.SocketException:连接超时:可能是由于地址无效

    当尝试与我们的服务器建立 SSL 连接时 我们在 IBM AIX 上经常看到以下异常 java net SocketException Socket closed at com sun net ssl internal ssl SSLSoc
  • CSS:将加载指示器放置在屏幕中央

    如何将加载指示器放置在屏幕中央 目前我正在使用一个小占位符 它似乎工作得很好 但是 当我向下滚动时 加载指示器保持在该预定义位置 我怎样才能让它跟随滚动 使其始终位于顶部 busy position absolute left 50 top
  • 使用 eclipse 配置mockito 时出现问题。给出错误:java.lang.verifyError

    当我将我的mockito库添加到类路径中 并使用一个简单的mockito示例进行测试时 我尝试使用模拟对象为函数add返回错误的值 我得到java lang verifyerror 以下是用于测试的代码 后面是 logcat Test pu
  • 从 AlertDialog 返回值

    我想构建一个函数来创建 AlertDialog 并返回用户输入的字符串 这是我用于创建对话框的函数 如何返回该值 String m Text private String openDialog String title AlertDialo
  • 在 HttpClient4 中使用 PoolingHttpClientConnectionManager 的正确方法出现问题 java.lang.IllegalStateException: 连接池关闭

    我正在 Java 中利用 HTTPclient4 发送 HTTP 请求并处理 HTTP 响应 我想使用连接池来提高性能 但我无法找到合适的方法来做到这一点 我正在 Java 中利用 HTTPclient4 发送 HTTP 请求并处理 HTT
  • 我们可以用java定制一个垃圾收集器吗?

    我们知道java的垃圾收集器是一个低优先级线程 在java中我们可以创建任何具有高优先级的线程 那么是否有可能拥有我们自己定制的具有可变优先级的垃圾收集器线程 我们可以根据内存管理的级别进行设置 有人尝试过吗 如果是的话 您能分享一些关于如
  • Java中如何限制文件大小

    我正在我的应用程序中创建一个文件 并继续向该文件中写入一些内容 但是当我的文件达到一定大小 比如说 100 行 后 我想删除第一行并将新行写入底部 要求是我的文件应该受到限制 但它应该保留我写入文件的最新内容 请告诉我在Java中是否可行
  • 从 SQL 语句中检索元数据(表名)

    我使用的是 Visual Studio 2008 我创建了一个 Winforms 应用程序 并且尝试从 SQL 语句中提取表名 con new SqlConnection connString String queryString Sele
  • servlet 如何获取 servlet 之外的文件的绝对路径?

    我们一直在使用 System getProperties user dir 来获取属性文件的位置 现在它已经部署在 Tomcat 上 通过 servlet 系统调用将位置指定为 tomcat 而不是属性文件所在的位置 我们如何动态调用属性文
  • JBoss 5 截断 base64 cookie 字符串的尾部 =

    从 JBoss 4 升级到 JBoss 5 后 我注意到最烦人的回归 它截断 base64 cookie 值的尾部等号 我花了很长时间才明白问题不是我的代码而是 JBoss 的 我用 google 搜索了一下 发现这是一个已知的问题issu
  • 从 AJP 连接器请求中检索 Shibboleth 属性

    当我在 Apache 上运行 Shibboleth 身份验证时遇到了一个奇怪的问题 当 Tomcat7 在后端运行时 Apache 通过 mod proxy ajp 发送所有内容 Shibboleth 的参数也是如此 In the 文档 h
  • 如何手动添加Android Studio依赖

    我多次尝试向我的项目添加依赖项 但每次都会出现错误 我想添加它们的依赖项是 de hdodenhof circleimageview 1 3 0 and com github bumptech glide glide 3 6 1 所以我想下
  • 如何使用 AEM 解析 org.apache.http.ssl?

    最终 我尝试在 Java 代码中使用 AWS S3 库来通过 AEM 启用服务器端 S3 上传 但在安装依赖项和 或由 AEM 识别时遇到了问题 每次我添加新的依赖项时 都会弹出五个问题 在我尝试构建的这个包中 这是我看到的错误 The i

随机推荐

  • 比较项目并将其添加到对象数组中

    下面的代码应该是 1 遍历两个数组 2 如果两个数组中都存在某个项目 则将其值添加到第一个数组中相似项目的值中 3 如果在arr2中找到该项目但在arr1中未找到该项目 则将该项目添加到arr1中 当两个数组具有相同大小时 我的代码可以按预
  • 首次“配置”调用后可以更新 GA4 自定义维度吗?

    我通过 GTM 加载了 google Analytics 4 并且我一直在努力向 增强测量 事件添加自定义维度 看完之后some other answers我已经确定 是的 尺寸在设置时有效 config 调用跟踪 ID 我可以在 GTM
  • android studio 构建错误 debug-unaligned.apk 路径未找到

    昨晚我将我的 android studio 更新到了 0 5 3 从那时起 每当我尝试生成签名的 apk 时 我都会收到此错误消息 当我只是通过 android studio 运行项目时 不会发生这种情况 我尝试重建 清理项目 重新启动 a
  • 三.js 如何求物体局部Up向量的世界方向向量?

    我的 object3D 有一个向上向量 0 1 0 object3D 围绕偏航 俯仰和滚动移动其原点 我的问题 如何找到在世界坐标中显示 object3D 向上向量方向的向量 编码上下文示例 var v1 new THREE Vector3
  • 在一个查询中进行选择和更新

    有没有一个查询可以同时执行两个查询 这是第一个 q select c id as campaignId c priceFactor o cid o bloggerPrice o state as state o customerPrice
  • 计算gps坐标半径[重复]

    这个问题在这里已经有答案了 我有这个坐标 纬度 45 815005 时间 15 978501 我有 mysql 表 其中纬度和经度坐标存储为浮点数 我需要的是获得我周围500米内的所有坐标 所以基本上我的问题是将 X 米添加到我的坐标位置
  • Google OAuth API 获取用户的电子邮件地址?

    我正在使用我自己的个人 Google 帐户玩 Google 的 OAuth 2 0 Playground 但我似乎无法使用 Playground 恢复我的 Gmail 地址 我使用的范围是 email profile https www g
  • 如何将 WMI 日期时间转换为标准日期时间?

    我正在尝试从 WMI 读取安装日期 Win32 OperatingSystem InstallDate 返回值如下所示 20091020221246 000000 180 我怎样才能获得有效的日期 您可以使用WbemScripting SW
  • 仅针对最后一个系数的线性回归“NA”估计

    我正在 R 中运行 summary lm 函数 当我打印系数时 我会得到除最后一个变量之外的所有变量的估计值 我得到的最后一个变量是 NA 我尝试将最后一列数据与另一列进行交换 最后一列中的任何内容都得到 NA 但其他所有内容都得到了估计
  • 显示偶数后跟所有奇数

    下面写的代码是正确的 但我想缩短这段代码 用java编写一个程序 在一维数组中输入10个数字 并将它们排列成所有偶数后面都是奇数 int a new int 6 int b new int 6 int i j int k 0 System
  • 无法从 JS AJAX 将数据发送回 Django

    html javascript var csrftoken name csrfmiddlewaretoken val Save click function var ajaxdata exam Exam val ajax url save
  • 在 git 中创建别名

    我对 Git 很陌生 我正在尝试单步执行存储库中的提交 我没有为每次提交复制并粘贴 SHA 而是使用此方法获取 HEAD 之后的下一次提交 git checkout git rev list HEAD master tail n 1 这工作
  • 在 Flutter 中按降序排列 Firestore 文档?

    我想根据 Firestore 文档上传的时间戳按降序排列 我的意思是 当我上传新照片时 它应该出现在我制作的图像网格的顶部 这里我使用了 orderBy 并为参数降序传递了 true get images 方法中代码的底部 默认情况下它是
  • 如何裁剪非闭合几何体

    Intro 我在实现剪辑时注意到一个问题 请参阅this 看起来 UIElement Clip 仍然渲染不可见的部分 渲染相对较小的几何体 线条仅fill1920x1200区域 2000垂直线 需要很多时间 使用时Clip and movi
  • Pyspark DataFrameWriter jdbc 函数的忽略选项是否忽略整个事务或仅忽略违规行?

    皮斯帕克DataFrameWriter类有一个jdbc功能用于将数据帧写入 sql 这个函数有一个 ignore文档说的选项将 如果数据已经存在 则静默忽略此操作 但它会忽略整个事务 还是只会忽略插入重复的行 如果我结合起来会怎样 igno
  • android 中的 android:weightSum 是什么,它是如何工作的?

    我想知道 什么是 android weightSum 和布局权重 它们如何工作 添加 superM 和 Jeff 的答案 如果LinearLayout中有2个视图 第一个的layout weight为1 第二个的layout weight为
  • 集合属性应该是只读的

    我正在为我的 WPF MVVM 程序集使用 FxCop 它给了我错误 集合属性应该是只读的 但在我的属性中 我需要 RaisePropertyChangedEvent 现在如果我通过删除其设置部分将属性设置为只读 我如何引发此事件 语法有点
  • Twitter Bootstrap - 选项卡 - URL 不变

    我正在使用 Twitter Bootstrap 及其 选项卡 我有以下代码 ul class nav nav tabs li class active a href add add a li li a href edit edit a li
  • 向 UITableViewController 添加顶部/底部视图?

    在我的故事板中 我有 UITableViewController 它具有自定义类 如何在表格视图的顶部和底部添加 UIView 对象 我是否必须在 UIView 内创建 UITableView 和两个所需的视图 然后手动初始化我的控制器 设
  • 如何使 JScrollPane 中的垂直和水平滚动条居中?

    我有一个 JPanel 其中有一个 JLabel 已添加到 JScrollPane 中 我有一个调用的actionListenerJLabel setIcon file jpg 图像正确显示在 JScrollPane 中并且为全尺寸 滚动条