How do I center the vertical and horizontal scrollbars in a JScrollPane?(如何在JScrollPane中使垂直和水平滚动条居中?)
问题描述
我有一个JPanel,其中有一个JLabel,添加到JScrollPane中。我有一个调用JLabel.setIcon("file.jpg");
的actionListener。图像正确地显示在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));
现在,请记住,只有在屏幕上实现了滚动窗格(或者至少在其父容器中进行了布局),这才能起作用
这篇关于如何在JScrollPane中使垂直和水平滚动条居中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何在JScrollPane中使垂直和水平滚动条居中?
- 如何使 JFrame 背景和 JPanel 透明且仅显示图像 2022-01-01
- 转换 ldap 日期 2022-01-01
- Eclipse 的最佳 XML 编辑器 2022-01-01
- GC_FOR_ALLOC 是否更“严重"?在调查内存使用情况时? 2022-01-01
- 未找到/usr/local/lib 中的库 2022-01-01
- 如何指定 CORS 的响应标头? 2022-01-01
- 在 Java 中,如何将 String 转换为 char 或将 char 转换 2022-01-01
- 获取数字的最后一位 2022-01-01
- 将 Java Swing 桌面应用程序国际化的最佳实践是什么? 2022-01-01
- java.lang.IllegalStateException:Bean 名称“类别"的 BindingResult 和普通目标对象都不能用作请求属性 2022-01-01