Java開發筆記(一百一十九)AWT佈局

前面介紹瞭如何在窗口上添加一個按鈕,但是每一個軟件界面都包含了許多控件,這些控件又是按照什麼規則在界面上排列的呢?仍以按鈕爲例,假如要在窗口上依次添加多個按鈕,那麼界面會怎樣顯示這些按鈕?想固然的話,按鈕們可能從左往右排列,也可能從上往下排列,也可能後面的按鈕在原處覆蓋掉前面的按鈕,究竟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

相關文章
相關標籤/搜索