Java 限制JScrollPane视图宽度

Java 限制JScrollPane视图宽度,java,swing,jscrollpane,Java,Swing,Jscrollpane,如何限制JScrollPanel视图宽度?我不希望在任何情况下发生水平滚动。我试图提供自己的JViewport,但这没有多大帮助 private static class WidthRestrictingViewport extends JViewport { private Container contents; public WidthRestrictingViewport(final Container cnts) { conten

如何限制
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
宽度,这样就不会发生水平滚动。我做错了什么?

对不起,我解释得不好。我找到了一个办法。多亏了

我面临的另一个问题是
ScrollablePanel
中的布局管理器错误。那是
FlowLayout
,把一切搞砸了。我当时不理解,认为问题在于
可滚动的
界面的使用


所以我只需要使用
ScrollablePanel
并将其布局管理器设置为
BorderLayout
,现在一切都好了

我不明白这个问题。当
JScrollPane
的内容比
JScrollPane
的实际大小更大时,会发生什么情况。干脆切断?在这种情况下,您可以考虑仅使滚动条不可见(<代码> JSCROLPAANEαGeTraceZONTRONTROLSCROBAR > SETVIEW(FALSE));罗宾,不要被切断。将视图宽度缩小为滚动窗格宽度。想象一下,面板的边框布局和内容都放在中间。但在这种情况下,只有内容的宽度受到面板宽度的限制,内容的高度可能会根据需要增长(添加滚动条)。我不认为
JViewPort
有责任限制其视图的宽度,这更多的是视图本身。特别是看一下界面