Java的FlowLayout没有正确调整大小

时间:2010-08-03 05:13:14

标签: java swing layout

我创建的JFrame已初始化为BorderLayoutJScrollPaneCENTER元素。

滚动窗格设置了VERTICAL_SCROLLBAR_ALWAYSHORIZONTAL_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在必要时被包裹,但如果它意味着必须向上/向下滚动,也总是可见。

有关如何解决此问题的任何建议吗?

感谢。

2 个答案:

答案 0 :(得分:9)

Wrap Layout给出了解释和解决方案。

答案 1 :(得分:0)

如果你使用desingner,你必须将preferedSize属性设置为null(删除设置的内容),然后通过单击preferedsize属性名称旁边的三点[...]按钮设置首选大小并将你的优先考虑的价值。

我遇到了同样的问题,它对我有用