我有一个JPanel作为JScrollPane的视口,而JPanel有一个GridBagLayout。该程序的用户将能够向JPanel添加行,并且JPanel将相应地扩展。它可以扩展,但是当它不需要扩展时,它不会按照我想要的顺序添加它们。我正努力实现:
______
|XXXXXX|
|XXXXXX|
| |
| |
| |
--------
但我得到了:
______
|XXXXXX|
| |
|XXXXXX|
| |
| |
--------
然后:
______
|XXXXXX|
| |
|XXXXXX|
| |
|XXXXXX|
--------
一旦它用完房间,它就会扩展并且JPanels正确对齐。
我尝试设置weighty = 0.9
以获得所需的效果,并且我将anchor属性设置为NORTHWEST
,但我得到了第二个结果。 GridBagLayout中是否可以实现所需的效果?
答案 0 :(得分:1)
至少有一个组件需要weighty=1
,因此最后在weighty=1
处添加一个spacer项。所有其他组件应具有weighty=0
。否则,GridBagLayout
不知道如何分配剩余空间并将其平均分配给所有组件。
答案 1 :(得分:1)
我认为您的组件需要weighty = 0
和/或fill = NONE
。填充和重量仅适用于您希望组件扩展以填充可用空间的情况,但您希望组件仅填充他们自然需要的空间。
然后,收集所有"空"在底部的空间,添加一个" spacer" (我使用新的JPanel())到第三行/下一行。提供间隔weighty = 1
和fill = VERTICAL
。然后,此空面板将展开以填充两行可见元素下方的空间。