我正在设计一个JFrame,它包含两个按顺序排列的ScrollPane,一个在另一个下面。我使用的是NetBeans(Matisse?)的内置表单编辑器,它使用GroupLayout。
我观察到的情况:调整框架大小时,首先调整底部的滚动窗格的大小,直到它消失,然后调整该滚动窗格上方的按钮,最后调整另一个滚动窗格。
我想要的:调整框架大小时,两个滚动窗格的大小应该相等,所以如果框架的大小更改了X,我希望两个滚动面板的大小更改X/2。
这可能吗?怎么可能?(GroupLayout解决方案优先)
附言:总布局包括以类似表格的方式放置的按钮和标签。所以GroupLayout对它来说已经很有用了
附言:除了简单的布局(网格、方框)之外,似乎最好的选择是MigLayout。
让我引用白皮书
增长和收缩当一个组件没有给定首选的大小时,应该发生什么是非常可定制的。可以选择将组件划分为增长和收缩优先级组,其中优先级较高的组将在调整优先级较低的组件/行/列的大小之前收缩/增长。可以设置这些组中的增长权重,以指定应如何在该优先级组中的组件/行/列之间划分可用空间或收缩。。。
p.S.2:我现在正在使用MigLayout,它非常强大,我想再次推荐它。顺便说一句,我发现他们的备忘单非常有用(所有选项都解释过了)。此外,他们网站上的演示包含许多示例和源代码。使用MigLayout可以轻松解决此处和其他许多问题。
Is this possible and how?
通过使用GridLayout
、GridBagLayout
、BoxLayout
(必须覆盖所有Min
、Max
和PreferredSize
)和MigLayout
Is this possible and how? (Solutions for GroupLayout preferred)
我不会走这条路,甚至可能是
网格布局确保元素大小均匀。用途:
JPanel panel = new JPanel(new GridLayout(2,1));
由于您希望它们垂直对齐,即在彼此之后,2表示行数,1表示列数。
然后简单地将滚动窗格添加到面板中:
panel.add(scrollPane1);
panel.add(scrollPane2);
有关网格布局的文档,请参阅此