GridBagLayout是一種很先進的、很人性化的布局管理器,通過網格的劃分,可以看到每個組件都占據一個網格,也可以一個組件占據幾個網格。與GridLayout布局管理器不同的是,GridBagLayout是按照開發人員自己的思路來排列控件位置,而GridLayout布局管理器根據系統的安排來布局。如果要采用網格組布局管理器,一般來說可以采用下列步驟:
1.創建一個GridBagLayout對象。
2.將容器設成此時象的布局管理器。
3.創建約束(GridBagConstraints)對象。
4.創建各個相應的組件。
5.添加各個組件與約束到網格組布局管理器中。
網格組由多個網格組成,而且各個行或者列的長度和寬度不同。但默認情況下,單元格從左上角開始有序列的編號,從第0行、第0列開始計數。
當向網格組布局管理器中添加組件時,需要分別定義每個單元格的序列號,只要設定相應的值,那么組件就會添加到網格組布局管理器中。涉及到組件被添加到什么位置有4個參數,即gridX, gridY, gridwidth, gridheight。其中,gridX, gridY分別定義了添加組件時左上角的行與列的位置,而gridwidth, gridheight分別定義了組件所占用的列數和行數。
網格組布局管理器中每個區城都要設里增量字段(weighttx與weighty分別代表x方向和y方向的增量).如果想讓某個區域保持初始化的大小,也就是說窗口縮放不會那就應該設置該區域的增量為0,相反如果讓組件能隨時完全填充單元格,那設置為100。這個布局管理器對象中還涉及到了兩個參數,即fill和anchor。
這兩個參數都是非常重要的約束,其中當組件不能填滿單元格時,fill參數就可以發揮作用。該約束的值主要有以下幾種。
lGridBagConstraints.NONE:在每一個方向都不填充,即保持原狀。
lGridBagConstraints.HORIZONTAL:只在水平方向上填充。
lGridBagConstraints.VERTICAL:只在垂直方向上填充。
lGridBagConstraints.BOTH:在兩個方向上都填充。
而anchor參數則是當一個組件大于分配給它的單元格時發揮作用,該約束就是約定如何處理該組件,它的值如下所示。
lGridBagConstraints.CENTER:居中縮小。
lGridBagConstraints.NORTH:頂部編小。
lGridBagConstraints.NORTHEAST:左上角縮小。
lGridBagConstrai nts.EAST:右側編小。