5

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

4

1 回答 1

2

对不起,我的解释很糟糕。我找到了一种方法来做到这一点。感谢JScrollpane 需要缩小它的宽度

我面临的另一个问题是ScrollablePanel. 那就是FlowLayout把所有事情都搞砸了。我一下子没看懂,以为问题出在Scrollable接口使用上。

So I just took ScrollablePanel and set its layout manager to BorderLayout and that is all fine now!

于 2012-11-13T23:01:36.893 回答