gpt4 book ai didi

java - ScrollPane Java Swing 中的 GridbagLayout

转载 作者:行者123 更新时间:2023-12-01 18:57:21 24 4
gpt4 key购买 nike

我刚刚在 GridBagLayout 中为分割 Pane 创建了一个布局。工作完美并且看起来正确。

然后我只需要添加一个垂直滚动条。因此我现在就这样做了。然而,布局并不像以前那样“大小”。现在它会延伸到所显示的 Pane 区域,而不是粘在其中。

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

我需要让它看起来像以前一样。有什么想法吗?

最佳答案

您所做的只是“隐藏”水平滚动条。这对管理组件的视口(viewport)没有影响。

尝试将现有布局包装在可滚动界面中。如果您不想自己实现,您可以使用包装容器来代替......

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;
}

}

然后,我们将其添加到滚动 Pane 中...

JSplitPane VPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,new class1(),new JScrollPane(new ScrollableWrapper(class2())));

关于java - ScrollPane Java Swing 中的 GridbagLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13466540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com