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 回答