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のおかげで、 width を縮小する必要があります。

私が直面したもう 1 つの問題は、 の間違ったレイアウト マネージャーですScrollablePanel。それがFlowLayoutすべてを台無しにしたのです。すぐには理解できず、Scrollableインターフェイスの使い方に問題があると思いました。

だから私はScrollablePanelそのレイアウトマネージャを取り、設定しただけで、BorderLayout今は大丈夫です!

于 2012-11-13T23:01:36.893 に答える