gpt4 book ai didi

java - 如何在 JScrollPane 中使垂直和水平滚动条居中?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:47:13 30 4
gpt4 key购买 nike

我有一个带有 JLabel 的 JPanel,添加到 JScrollPane。我有一个调用 JLabel.setIcon("file.jpg"); 的 actionListener。图像正确显示在 JScrollPane 中并且是全尺寸的。滚动条完美显示。我试图默认将垂直和水平滚动条定位在中心,因此默认情况下您正在查看图像的中心。

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

我试过了

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

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

最佳答案

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

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

然后您需要组件的大小,但是一旦它被添加到滚动 Pane 中,您就可以从视口(viewport)中获取它...

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

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

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

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

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

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

关于java - 如何在 JScrollPane 中使垂直和水平滚动条居中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20364936/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com