我正在设计一个JFrame,它包含两个顺序排列的ScrollPanes,一个在另一个之下。我正在使用NetBeans(Matisse?)的内置表单编辑器,它使用GroupLayout。
我观察到的内容:在调整框架大小时,首先调整底部的ScrollPane,直到它消失,然后是此ScrollPane上方的按钮,最后是另一个Scrollpane。
我想要什么:调整帧的大小时,两个ScrollPanes都应该调整大小,所以如果框架的大小改变了X,我希望两个Scrollpanes都将它们的大小改为X / 2。 / p>
这可能吗?怎么样? (GroupLayout的解决方案首选)
P.S。:总布局包括按表格放置的按钮和标签。所以GroupLayout已经非常有用了。
P.S。:除了简单的布局(Grid,Box)之外,最好的选择是MigLayout。
让我引用white paper
成长和萎缩 当组件没有给出首选大小时应该发生什么是非常可定制的。可以选择将组件划分为增长和收缩优先级组,其中优先级较高的优先级将缩小/增长,然后调整具有较低优先级的组件/行/列的大小。可以设置这些组中的增长权重,以指定如何在该优先级组中的组件/行/列之间划分可用空间或收缩。 ...
P.S.2:我现在正在使用MigLayout,它非常强大,我想再次推荐它。顺便说一句。我发现他们的cheat sheet非常有用(解释了所有选项)。此外,他们网站上的演示包含许多示例和源代码。使用MigLayout可以轻松解决此问题和许多其他问题。
答案 0 :(得分:3)
Is this possible and how?
使用GridLayout
,GridBagLayout
,BoxLayout
(必须覆盖所有Min
,Max
和PreferredSize
)以及{{1 }}
MigLayout
我不会这样走,甚至可能
答案 1 :(得分:2)
网格布局可确保元素大小均匀。使用:
JPanel panel = new JPanel(new GridLayout(2,1));
由于您希望它们垂直对齐,即彼此相继,2表示行数,1表示列数。
然后只需将ScrollPanes添加到面板:
panel.add(scrollPane1);
panel.add(scrollPane2);
有关网格布局的文档,请查看this