箱式布局比較靈活,也比較實(shí)用。Swing提供的BOX類(lèi)就是箱式布局類(lèi),它的默認(rèn)布局管理器就是BoxLayout,在箱式布局管理器中包括兩種箱子:一種是水平箱,另外一種是垂直箱。
創(chuàng)建一個(gè)水平箱的源代碼如下:
創(chuàng)建一個(gè)垂直箱的源代碼如下:
創(chuàng)建好箱子后,就可以像添加其他組件一樣添加下面的控件,源代碼如下:
兩種箱子的區(qū)別在于組件的排列順序,水平箱是按照從左到右的順序排列,而垂直箱按照從上到下的順序排列。對(duì)于箱式布局管理器而言,最關(guān)鍵的就是每個(gè)組件的3個(gè)尺寸。
l首選尺寸,即組件顯示時(shí)的寬度和高度。
l最大尺寸,即組件能被顯示的最大寬度和高度。
l最小尺寸,即組件被顯示的最小高度和最小寬度。
下面是水平箱式布局管理器中組件排列的幾個(gè)重點(diǎn):
l計(jì)算最高組件的最大高度,嘗試把所有的組件都增加到這個(gè)高度。如果有某些組件不能達(dá)到此高度,那么要在Y軸上對(duì)齊需要通過(guò)getAlignmentY方法實(shí)現(xiàn),該方法返回一個(gè)介于0(按頂部對(duì)齊)和1(按底部對(duì)齊)之間的浮點(diǎn)數(shù)。組件的默認(rèn)值是0.5,也就是中線(xiàn)對(duì)齊。
l得到每個(gè)組件的首選寬度,然后把所有的首選寬度合計(jì)起來(lái)。
l如果首選寬度總和小于箱的寬度,那么所有的組件都會(huì)相應(yīng)的延伸,直到適應(yīng)這個(gè)箱子的寬度。組件從左到右排列,并且相鄰兩個(gè)組件之間沒(méi)有多余的空格。