如何限制JScrollPanel
视图宽度?在任何情况下我都不希望水平滚动发生。我试图提供自己的JViewport
,但这没有多大帮助。
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
宽度,因此水平滚动不会发生。我做错了什么?
答案 0 :(得分:2)
对不起,我的解释很糟糕。我找到了一种方法。感谢JScrollpane needs to shrink its width。
我遇到的另一个问题是ScrollablePanel
中的布局管理器错误。那是FlowLayout
搞砸了所有事情。我立刻不理解它,并认为问题在于Scrollable
接口使用。
所以我刚接过ScrollablePanel
并将其布局管理器设置为BorderLayout
,现在一切都很好!