我有一个带有JLabel的JPanel,添加到JScrollPane中.我有一个调用的actionListener JLabel.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));
现在,请记住,只有在屏幕上实现滚动窗格(或者至少它已在其父容器中布局)之后,这才会起作用