我创建的JFrame
已初始化为BorderLayout
,JScrollPane
为CENTER
元素。
滚动窗格设置了VERTICAL_SCROLLBAR_ALWAYS
和HORIZONTAL_SCROLLBAR_NEVER
政策。我frame
的意图是控制宽度,而高度应该随着数据的添加/删除而增长/缩小。
在我的scroll pane
内,我添加了一个简单的JPanel
(让我们称之为内容面板),该FlowLayout
(和LEADING
政策)初始化。
为了对此进行测试,我只需使用content panel
组件填充我的JLabel("Item " + n)
,其中n
是循环计数器。
如果labels
足够大,我希望看到我的frame
显示在一行上,当缩小宽度时标签会换行到其他行。但相反,只有一行显示没有包装......永远。
有人知道为什么flow layout
在涉及scroll pane
时不会换行吗?
如果我将所有scroll pane
全部删除并将content panel
直接放在frame
中,则会出现所需的包装效果,但如果frame
高度缩小小于content panel
高度刚刚消失。
我的想法是,我希望我的labels
在必要时被包裹,但如果它意味着必须向上/向下滚动,也总是可见。
有关如何解决此问题的任何建议吗?
感谢。
答案 0 :(得分:9)
Wrap Layout给出了解释和解决方案。
答案 1 :(得分:0)
如果你使用desingner,你必须将preferedSize属性设置为null(删除设置的内容),然后通过单击preferedsize属性名称旁边的三点[...]按钮设置首选大小并将你的优先考虑的价值。
我遇到了同样的问题,它对我有用