5
如何限制JScrollPanel
視圖寬度?無論如何我都不想橫向滾動。我試圖提供自己的JViewport
但這並沒有太大的幫助。限制JScrollPane視圖寬度
private static class WidthRestrictingViewport extends JViewport {
private Container contents;
public WidthRestrictingViewport(final Container cnts) {
contents = cnts;
}
@Override
public Dimension getPreferredSize() {
if (getParent() instanceof JScrollPane) {
JScrollPane sp = (JScrollPane) getParent();
return new Dimension(sp.getWidth(), contents.getHeight());
}
return super.getPreferredSize();
}
@Override
public Dimension getMaximumSize() {
return getPreferredSize();
}
}
和代碼創建一個我需要提供其最大寬度JScrollPane
Container fpdp = ....
JScrollPane sp = new JScrollPane();
sp.setViewport(new WidthRestrictingViewport(fpdp));
sp.setViewportView(fpdp);
contents
實例,但是我想它的寬度不超過JScrollPane
寬度,水平滾動不會發生。我究竟做錯了什麼?
我不明白這個問題。當「JScrollPane」的內容大於「JScrollPane」的實際大小時,會發生什麼情況。簡單地切斷?在這種情況下,你可能會考慮讓滾動條不可見('JScrollPane#getHorizontalScrollBar#setVisible(false)'); – Robin
@Robin,不切斷。縮小視圖寬度以滾動窗格寬度。試想一下,邊界佈局和內容放置在中心的面板。但在這種情況下,只有內容的寬度受面板寬度限制,並且內容的高度可能隨着需要而增加(使用滾動條添加)。 –
我認爲'JViewPort'沒有責任限制其視圖的寬度,這更多的是視圖本身。看看['Scrollabe'](http://docs.oracle.com/javase/7/docs/api/javax/swing/Scrollable.html)接口,特別是['Scrollable#getScrollableTracksViewportWidth'](http ://docs.oracle.com/javase/7/docs/api/javax/swing/Scrollable.html#getScrollableTracksViewportWidth%28%29) – MadProgrammer