GridBagLayout是一種很先進(jìn)的、很人性化的布局管理器而姐,通過(guò)網(wǎng)格的劃分,可以看到每個(gè)組件都占據(jù)一個(gè)網(wǎng)格划咐,也可以一個(gè)組件占據(jù)幾個(gè)網(wǎng)格拴念。與GridLayout布局管理器不同的是钧萍,GridBagLayout是按照開(kāi)發(fā)人員自己的思路來(lái)排列控件位置,而GridLayout布局管理器根據(jù)系統(tǒng)的安排來(lái)布局政鼠。如果要采用網(wǎng)格組布局管理器风瘦,一般來(lái)說(shuō)可以采用下列步驟:
1.創(chuàng)建一個(gè)GridBagLayout對(duì)象。
2.將容器設(shè)成此時(shí)象的布局管理器公般。
3.創(chuàng)建約束(GridBagConstraints)對(duì)象弛秋。
4.創(chuàng)建各個(gè)相應(yīng)的組件。
5.添加各個(gè)組件與約束到網(wǎng)格組布局管理器中俐载。
網(wǎng)格組由多個(gè)網(wǎng)格組成蟹略,而且各個(gè)行或者列的長(zhǎng)度和寬度不同。但默認(rèn)情況下遏佣,單元格從左上角開(kāi)始有序列的編號(hào)挖炬,從第0行、第0列開(kāi)始計(jì)數(shù)状婶。
當(dāng)向網(wǎng)格組布局管理器中添加組件時(shí)意敛,需要分別定義每個(gè)單元格的序列號(hào),只要設(shè)定相應(yīng)的值,那么組件就會(huì)添加到網(wǎng)格組布局管理器中膛虫。涉及到組件被添加到什么位置有4個(gè)參數(shù)草姻,即gridX, gridY, gridwidth, gridheight。其中稍刀,gridX, gridY分別定義了添加組件時(shí)左上角的行與列的位置撩独,而gridwidth, gridheight分別定義了組件所占用的列數(shù)和行數(shù)。
網(wǎng)格組布局管理器中每個(gè)區(qū)城都要設(shè)里增量字段(weighttx與weighty分別代表x方向和y方向的增量).如果想讓某個(gè)區(qū)域保持初始化的大小账月,也就是說(shuō)窗口縮放不會(huì)那就應(yīng)該設(shè)置該區(qū)域的增量為0综膀,相反如果讓組件能隨時(shí)完全填充單元格,那設(shè)置為100局齿。這個(gè)布局管理器對(duì)象中還涉及到了兩個(gè)參數(shù)剧劝,即fill和anchor。
這兩個(gè)參數(shù)都是非常重要的約束抓歼,其中當(dāng)組件不能填滿單元格時(shí)讥此,fill參數(shù)就可以發(fā)揮作用。該約束的值主要有以下幾種谣妻。
lGridBagConstraints.NONE:在每一個(gè)方向都不填充萄喳,即保持原狀。
lGridBagConstraints.HORIZONTAL:只在水平方向上填充拌禾。
lGridBagConstraints.VERTICAL:只在垂直方向上填充取胎。
lGridBagConstraints.BOTH:在兩個(gè)方向上都填充展哭。
而anchor參數(shù)則是當(dāng)一個(gè)組件大于分配給它的單元格時(shí)發(fā)揮作用湃窍,該約束就是約定如何處理該組件闻蛀,它的值如下所示。
lGridBagConstraints.CENTER:居中縮小您市。
lGridBagConstraints.NORTH:頂部編小觉痛。
lGridBagConstraints.NORTHEAST:左上角縮小。
lGridBagConstrai nts.EAST:右側(cè)編小茵休。