Java - 仅垂直滚动

Java - Only Vertical Scroll

我正在尝试从 GURPS 创建一个角色 Sheet,它基本上是这样的:

/-Main Panel--------\
|/-Panel-----------\|
|\-----------------/|
|/-Another Panel---\|
||    Contents     ||
|\-----------------/|
\-------------------/

而且我需要它垂直滚动,但水平调整大小。我正在使用 BoxLayout 垂直排列面板,这是一种完全适合容器中内容的个人布局,并尝试使用:

JScrollPane scrollPane = new JScrollPane(mainPanel);
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);

但它并没有像我想要的那样工作,它没有改变内容的水平大小。有人有什么想法吗?

默认情况下,添加到 JScrollPane 的组件以其 preferredSize() 显示,并且当首选大小大于滚动窗格大小时出现滚动条。

如果您想强制面板水平 expand/shrink 以填充滚动窗格的宽度,那么您需要为您的面板实现 Scrollable 接口。

所以基本上您需要将 getScrollableTracksViewportWidth() 方法实现为 return “true”。现在主面板将调整大小以填充滚动窗格的宽度。

或者您可以查看 Scrollable Panel 为您提供此支持,而不是自己实现 Scrollable 接口的所有方法。