Java - 仅垂直滚动

时间:2016-08-28 20:44:42

标签: java swing jscrollpane

我试图从GURPS创建一个角色表,它基本上是这样的:

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

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

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

但它没有按照我想要的方式工作,它并没有改变它内容的横向大小。有没有人有任何想法?

1 个答案:

答案 0 :(得分:2)

默认情况下,添加到JScrollPane的组件显示在preferredSize()上,当首选大小大于滚动窗格的大小时,会显示滚动条。

如果要强制面板水平展开/收缩以填充滚动窗格的宽度,则需要为面板实现Scrollable界面。

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

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