在Swing中相等地调整两个滚动窗格的大小



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

我观察到的情况:调整框架大小时,首先调整底部的滚动窗格的大小,直到它消失,然后调整该滚动窗格上方的按钮,最后调整另一个滚动窗格。

我想要的:调整框架大小时,两个滚动窗格的大小应该相等,所以如果框架的大小更改了X,我希望两个滚动面板的大小更改X/2。

这可能吗?怎么可能?(GroupLayout解决方案优先)

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

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

让我引用白皮书

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

p.S.2:我现在正在使用MigLayout,它非常强大,我想再次推荐它。顺便说一句,我发现他们的备忘单非常有用(所有选项都解释过了)。此外,他们网站上的演示包含许多示例和源代码。使用MigLayout可以轻松解决此处和其他许多问题。

Is this possible and how?

通过使用GridLayoutGridBagLayoutBoxLayout(必须覆盖所有MinMaxPreferredSize)和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);

有关网格布局的文档,请参阅此

相关内容

  • 没有找到相关文章

最新更新