如何强制JScrollPane只滚动垂直?

时间:2011-01-24 14:10:28

标签: java swing jscrollpane

伙计们,我需要在jscrollpanel中放置一些按钮,但JScrollPane不会垂直创建滚动。我在JScrollPane中使用JPanel,它使用简单的FlowLayout布局。如何让JScrollPanel仅在垂直方向滚动?

问题:

enter image description here

所需解决方案: enter image description here

6 个答案:

答案 0 :(得分:13)

查看Wrap Layout

答案 1 :(得分:4)

您使用JScrollPane这一事实会改变有关内部FlowLayout的一些内容。实际上,当FlowLayout尝试布局包含的JButton时,它会使用可用空间。在您的情况下,您对JScrollPane的“可滚动客户端”中的空间没有限制。因此,考虑到您的FlowLayout具有无限空间,它会使用此空间根据它显示项目。

因此,解决方案是更改可滚动客户端,以便将其可视区域限制为与JScrollPane的JViewport相同。

但是,在这种情况下你甚至不会有你的行返回,因为FlowLayout不能很好地处理这种情况。

如果我是你,我当然会选择其他布局。由于GridLayout不能很好地处理边框,我认为你可以使用的唯一合理的标准布局是GridBagLayout,尽管我担心你的动态内容限制可能需要你更可定制的东西。

答案 2 :(得分:4)

JTextArea c = new JTextArea();
c.setLineWrap(true);
c.setWrapStyleWord(false);

这会将文本区域中的任何内容包装到下一行而不创建水平滚动。

答案 3 :(得分:3)

使用我在此答案中发布的修改后的Flow Layout:How can I let JToolBars wrap to the next line (FlowLayout) without them being hidden ty the JPanel below them?

它将换行到下一行,滚动条应垂直滚动。

答案 4 :(得分:1)

scrollbar = new Scrollbar(Scrollbar.VERTICAL);

答案 5 :(得分:0)

或者您可以使用JList

有关详细信息,请访问此网站:http://docs.oracle.com/javase/tutorial/uiswing/components/list.html

示例类:ListDialog仅使用垂直滚动条,调整窗口大小或元素不适合视图。