如何将垂直和水平滚动条置于JScrollPane中心?

 手机用户2502937963 发布于 2023-02-13 08:31

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

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

我试过了

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

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

1 个回答
  • 基本上,您需要知道视口的可视区域的大小.

    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));
    

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

    2023-02-13 08:37 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有