如何让GridBagLayout正确排列

时间:2016-01-20 17:08:37

标签: java swing jpanel gridbaglayout

我有一个JPanel作为JScrollPane的视口,而JPanel有一个GridBagLayout。该程序的用户将能够向JPanel添加行,并且JPanel将相应地扩展。它可以扩展,但是当它不需要扩展时,它不会按照我想要的顺序添加它们。我正努力实现:

 ______
|XXXXXX|
|XXXXXX|
|      |
|      |
|      |
--------

但我得到了:

 ______
|XXXXXX|
|      |
|XXXXXX|
|      |
|      |
--------

然后:

 ______
|XXXXXX|
|      |
|XXXXXX|
|      |
|XXXXXX|
--------

一旦它用完房间,它就会扩展并且JPanels正确对齐。

我尝试设置weighty = 0.9以获得所需的效果,并且我将anchor属性设置为NORTHWEST,但我得到了第二个结果。 GridBagLayout中是否可以实现所需的效果?

2 个答案:

答案 0 :(得分:1)

至少有一个组件需要weighty=1,因此最后在weighty=1处添加一个spacer项。所有其他组件应具有weighty=0。否则,GridBagLayout不知道如何分配剩余空间并将其平均分配给所有组件。

答案 1 :(得分:1)

我认为您的组件需要weighty = 0和/或fill = NONE。填充和重量仅适用于您希望组件扩展以填充可用空间的情况,但您希望组件仅填充他们自然需要的空间。

然后,收集所有"空"在底部的空间,添加一个" spacer" (我使用新的JPanel())到第三行/下一行。提供间隔weighty = 1fill = VERTICAL。然后,此空面板将展开以填充两行可见元素下方的空间。