前面介紹瞭如何在窗口上添加一個按鈕,但是每一個軟件界面都包含了許多控件,這些控件又是按照什麼規則在界面上排列的呢?仍以按鈕爲例,假如要在窗口上依次添加多個按鈕,那麼界面會怎樣顯示這些按鈕?想固然的話,按鈕們可能從左往右排列,也可能從上往下排列,也可能後面的按鈕在原處覆蓋掉前面的按鈕,究竟AWT會以哪一種方式顯示多個按鈕,還得具體編碼開展實地驗證才行。下面即是往程序窗口前後添加五個按鈕的代碼片斷:html
frame.setSize(400, 120); // 必須設置寬高,不然沒有窗體 Panel panel = new Panel(); // 建立一個面板 panel.add(new Button("第一個按鈕")); // 在面板上添加一個按鈕 panel.add(new Button("第二個按鈕")); // 在面板上添加一個按鈕 panel.add(new Button("第三個按鈕")); // 在面板上添加一個按鈕 panel.add(new Button("第四個按鈕")); // 在面板上添加一個按鈕 panel.add(new Button("第五個按鈕")); // 在面板上添加一個按鈕 frame.add(panel); // 在窗口上添加面板
運行上述的測試代碼,觀察到以下圖所示的窗口界面。程序員
這下眼見爲實了,AWT的默認佈局原來是從左往右依次排列控件,遇到一行放不下的狀況,則另起一行放置新控件。這種默認佈局被稱做流式佈局,能夠看做是流水帳記事,跟平常的手寫差很少,手寫一段文字也是從左往右書寫,寫滿一行後另起一行書寫。流式佈局的大名叫作FlowLayout,調用面板對象的setLayout方法便可設置指定的佈局類型。不過從界面效果看,流式佈局與手寫有一點不一樣,手寫的時候每行文字都是靠左對齊,而流式佈局的內部控件倒是居中對齊。若想讓流式佈局也採起靠左對齊的格式,則需調用佈局對象的setAlignment方法設置對齊格式。如此一來,徹底等同手寫規則的佈局代碼應當改成如下這般:佈局
FlowLayout layout = new FlowLayout(); // 建立一個流式佈局 layout.setAlignment(FlowLayout.LEFT); // 設置對齊方式爲靠左對齊 panel.setLayout(layout); // 指定面板採用流式佈局
除了流式佈局,AWT還提供了其它兩種常見的佈局類型,分別是網格佈局GridLayout,以及邊界佈局BorderLayout。網格佈局相似表格,採起多行多列的界面劃分,而且容許程序員指定行數與列數。其中網格對象的setRows方法可用於設置行數,setColumns方法可用於設置列數,也可在GridLayout的構造方法中直接指定行數和列數。如今準備把面板的流式佈局換成五行單列的網格佈局,更改後的佈局代碼以下所示:測試
GridLayout layout = new GridLayout(5, 1); // 建立一個網格佈局,有五行一列 layout.setRows(5); // 設置行數爲5 layout.setColumns(1); // 設置列數爲1 panel.setLayout(layout); // 指定面板採用網格佈局
運行以上的網格佈局代碼,觀察到以下圖所示的窗口界面。編碼
如圖可見,此時的五個按鈕果真造成了五行單列的網格結構。htm
至於邊界佈局,彷彿遵守古人的國土觀念:本國位於天地之中,四周分佈着其它部族包括東夷、南蠻、西戎、北狄,具體方位遵循地圖學的「上北下南、左西右東」格局。邊界佈局自身無需調用專門的方法,而是由面板對象在調用add方法添加控件之時,順便指定該控件在邊界佈局中所處的方位,例如EAST表明東邊也就是佈局右側,WEST表明西邊也就是佈局左側,SOUTH表明南邊也就是佈局下方,NORTH表明北邊也就是佈局上方,CENTER表明中央也就是面板正中。使用邊界佈局改寫後的代碼片斷示例以下:對象
panel.setLayout(new BorderLayout()); // 指定面板採用邊界佈局 panel.add(new Button("東邊的按鈕"), BorderLayout.EAST); // 在面板的東邊(右側)添加按鈕 panel.add(new Button("西邊的按鈕"), BorderLayout.WEST); // 在面板的西邊(左側)添加按鈕 panel.add(new Button("北邊的按鈕"), BorderLayout.NORTH); // 在面板的北邊(上方)添加按鈕 panel.add(new Button("南邊的按鈕"), BorderLayout.SOUTH); // 在面板的南邊(下方)添加按鈕 panel.add(new Button("中間的按鈕"), BorderLayout.CENTER); // 在面板的中間位置添加按鈕
運行以上的邊界佈局代碼,觀察到以下圖所示的窗口界面。blog
從上面的界面效果可知,五個按鈕分別排列在上下左右中一共五個方位。開發
更多Java技術文章參見《Java開發筆記(序)章節目錄》get