我有一个 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(使用前将#替换为@)