伙计们,我需要在jscrollpanel中放置一些按钮,但JScrollPane不会垂直创建滚动。我在JScrollPane中使用JPanel,它使用简单的FlowLayout布局。如何让JScrollPanel仅在垂直方向滚动?
问题:
所需解决方案:
答案 0 :(得分:13)
答案 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仅使用垂直滚动条,调整窗口大小或元素不适合视图。