本文介紹了如何在JScrollPane中使垂直和水平滾動(dòng)條居中?的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!
問(wèn)題描述
我有一個(gè)JPanel,其中有一個(gè)JLabel,添加到JScrollPane中。我有一個(gè)調(diào)用JLabel.setIcon("file.jpg");
的actionListener。圖像正確地顯示在JScrollPane中并且是全尺寸的。滾動(dòng)條顯示得非常完美。默認(rèn)情況下,我嘗試將垂直和水平滾動(dòng)條放置在中間,這樣默認(rèn)情況下您會(huì)看到圖像的中心。
是否有JScrollPane方法可以將視區(qū)定位在圖像的中心?或者,我可以手動(dòng)將每個(gè)滾動(dòng)條的位置設(shè)置為最大尺寸除以2嗎?
我已嘗試
JScrollPane.getVerticalScrollBar().setValue(JScrollPane.getVerticalScrollBar().getMaximum() / 2);
當(dāng)它編譯時(shí),它不會(huì)使?jié)L動(dòng)條居中。我還嘗試將JPanel的布局管理器設(shè)置為GridBagLayout,但也不起作用。
推薦答案
基本上,您需要知道視區(qū)的可視區(qū)域的大小。
Rectangle bounds = scrollPane.getViewport().getViewRect();
然后您需要該組件的大小,但一旦將其添加到滾動(dòng)窗格中,您就可以從查看端口獲得該大小…
Dimension size = scrollPane.getViewport().getViewSize();
現(xiàn)在您需要計(jì)算中心位置…
int x = (size.width - bounds.width) / 2;
int y = (size.height - bounds.height) / 2;
然后您只需調(diào)整視窗位置…
scrollPane.getViewport().setViewPosition(new Point(x, y));
現(xiàn)在,請(qǐng)記住,只有在屏幕上實(shí)現(xiàn)了滾動(dòng)窗格(或者至少在其父容器中進(jìn)行了布局),這才能起作用
這篇關(guān)于如何在JScrollPane中使垂直和水平滾動(dòng)條居中?的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,