1

我正在设计一个包含两个按顺序排列的 ScrollPanes 的 JFrame,一个在另一个之下。我正在使用使用 GroupLayout 的 NetBeans (Matisse?) 的内置表单编辑器。

我观察到:在调整框架大小时,首先调整底部的 ScrollPane 的大小,直到它消失,然后是此 ScrollPane 上方的按钮,最后是另一个 ScrollPane。

我想要什么:当调整框架的大小时,两个 ScrollPanes 的大小都应该相同,所以如果框架的大小改变了 X,我希望两个 Scrollpanes 的大小都改变 X/2。

这可能吗?如何?(首选 GroupLayout 的解决方案)

PS:总布局包括以表格方式放置的按钮和标签。所以 GroupLayout 已经对它很有用了。

PS:似乎除了简单的布局(网格、框)之外最好的选择是 MigLayout。

让我从白皮书中引用

增长和收缩 当一个组件没有给出首选大小时会发生什么是非常可定制的。可以选择将组件划分为增长和收缩优先级组,其中较高优先级将收缩/增长,然后调整具有较低优先级的组件/行/列的大小。可以设置这些组内的增长权重,以指定如何在该优先级组中的组件/行/列之间分配可用空间或收缩。...

PS2:我现在正在使用 MigLayout,它是如此强大,我想再次推荐它。顺便提一句。我发现他们的备忘单非常有用(解释了所有选项)。他们网站上的演示也包含许多示例和源代码。使用 MigLayout 可以轻松解决这里的问题和许多其他问题。

4

2 回答 2

3
Is this possible and how?

通过使用GridLayout, GridBagLayout, BoxLayout(必须覆盖所有Min, Maxand PreferredSize) 和 forMigLayout

Is this possible and how? (Solutions for GroupLayout preferred)

我不会走这条路,甚至有可能

于 2012-11-14T14:05:46.083 回答
2

网格布局可确保元素大小均匀。采用:

JPanel panel = new JPanel(new GridLayout(2,1));

由于您希望它们垂直对齐,即彼此之后,2 表示行数,1 表示列数。

然后只需将 ScrollPanes 添加到面板:

panel.add(scrollPane1);
panel.add(scrollPane2);

有关网格布局的文档,请查看

于 2012-11-14T14:04:16.833 回答