Java的FlowLayout没有正确调整大小
问题描述:
我创建了一个JFrame
,其初始化为BorderLayout
和JScrollPane
作为其CENTER
元素。Java的FlowLayout没有正确调整大小
滚动窗格设置为VERTICAL_SCROLLBAR_ALWAYS
和HORIZONTAL_SCROLLBAR_NEVER
策略。我的frame
的目的是为了控制宽度,而高度应该随着数据的添加/删除而增大/缩小。
里面我scroll pane
,我添加了一个简单的JPanel
(可以称之为内容面板),它与FlowLayout
(和LEADING
政策)初始化。
为了测试这一点,我只需将我的content panel
填充为20 JLabel("Item " + n)
组件,其中n
是循环计数器。
如果frame
足够大,并且我收缩宽度时将标签换行到其他行,我期望看到我的labels
显示在单行上。但是,相反,只有一行显示没有包装......曾经。
有没有人知道为什么flow layout
不涉及scroll pane
涉及?
如果我删除scroll pane
一起,直接就把content panel
在frame
,发生所期望的效果的包装,但如果frame
高度收缩比content panel
高度,它只是消失较小。
想法是我希望我的labels
在必要时被包装,但如果意味着必须向上/向下滚动,则始终可见。
有关如何解决此问题的任何建议?
谢谢。
答
如果您使用desingner,则必须将preferredredSize属性设置为null(删除设置的内容),然后通过单击preferredredsize属性名称旁边的三点[...]按钮设置首选大小,然后放置您的首选价值。
我遇到了同样的问题,它适用于我
它似乎到目前为止根据需要/预期工作!让我们希望Oracle比Sun更愿意投资Swing!多谢camickr! – Jeach 2010-08-03 06:04:17
你会说FlowLayout有缺陷吗?或者你认为这是Sun的意图吗? WrapLayout使得它更应该成为Swing的一部分! – Jeach 2010-08-03 06:13:21
它不是一个错误,因为没有试图动态重新计算首选大小的代码。它只是有人设计它的工作方式。 – camickr 2010-08-03 14:38:01