0

分割ペインの GridBagLayout でレイアウトを作成しました。完璧に機能し、正しく見えました。

次に、スクロールバーを垂直方向にのみ追加する必要がありました。したがって、私は今それをしました。ただし、レイアウトは以前のように「サイズ」になりません。表示されているペインの領域にくっつくのではなく、横に伸びます。

JSplitPane VPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,(new class1()),new JScrollPane(new class2(),ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER));

以前のように見せる必要があります。何か案は?

4

1 に答える 1

4

水平スクロール バーを「非表示」にするだけです。これは、コンポーネントを管理しているビュー ポートには影響しません。

Scrollable既存のレイアウトをインターフェイスでラップしてみてください。自分で実装したくない場合は、代わりにラッパーコンテナーを使用できます...

public class ScrollableWrapper extends JPanel implements Scrollable {

    private Component wrapper;

    public ScrollableWrapper(Component wrapper) {
        setLayout(new BorderLayout());
        add(wrapper);
        this.wrapper = wrapper;
    }

    @Override
    public Dimension getPreferredScrollableViewportSize() {
        return wrapper.getPreferredSize();
    }

    @Override
    public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) {
        return 64;
    }

    @Override
    public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction) {
        return 64;
    }

    @Override
    public boolean getScrollableTracksViewportWidth() {
        return true;
    }

    @Override
    public boolean getScrollableTracksViewportHeight() {
        return false;
    }

}

次に、それをスクロール ペインに追加します...

JSplitPane VPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,new class1(),new JScrollPane(new ScrollableWrapper(class2())));
于 2012-11-20T05:03:11.250 に答える