在Swing中同等调整两个ScrollPanes的大小

时间:2012-11-14 14:01:32

标签: java swing resize jscrollpane grouplayout

我正在设计一个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可以轻松解决此问题和许多其他问题。

2 个答案:

答案 0 :(得分:3)

Is this possible and how?

使用GridLayoutGridBagLayoutBoxLayout(必须覆盖所有MinMaxPreferredSize)以及{{1 }}

MigLayout

我不会这样走,甚至可能

答案 1 :(得分:2)

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

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

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

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

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

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