java教程課件第八章7_第1頁
java教程課件第八章7_第2頁
java教程課件第八章7_第3頁
java教程課件第八章7_第4頁
java教程課件第八章7_第5頁
已閱讀5頁,還剩92頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第八章Applet與圖形用戶界面(續1)七、圖形用戶界面的標準組件抽象窗口工具包

AWT

是一個袖珍窗口庫,也是

Java

環境的標準成份,它提供設計窗口系統所需要的一些基本組件,這些組件都是

Component

這個基本類的子類,如下圖所示。ComponentButtonCanvasCheckboxContainerLabelListPanelWindowsDialogFrameScrollbarTextFieldTextAreaTextComponent(一)基本控制組件使用基本控制組件的步驟:1、某種創建某種基本控制組件類的新對象,指定該對象的屬性,如外觀、大小等。2、將該組件對象加入到某個容器的合適位置。3、創建該組件對象的監聽者,即實現以該組件為事件源的事件對應的監聽者接口,也可以使現有的類實現該接口成為監聽者。

Component類是所有組件類和容器類的父類,其中定義了一些每個容器和組件都可能用到的方法,較常用的有:1、publicvoidadd(PopupMenupopup)

//在組件上加入一些彈出菜單,當用戶用鼠標右鍵單擊組件時將彈出這個菜單。2、publicColorgetBackground()

//獲得組件的背景色3、publicFontgetFont()

//獲得組件使用的字體4、publicColorgetForeground()

//獲得組件的前景色5、publicGraphicsgetGraphics()

//獲得在組件上繪圖時需要使用的Graphics對象6、publicvoidrepaint(intx,inty,inywidth,intheigth)

//以指定的坐標點(x,y)為左上角,重畫組件指定寬度、指定高度的區域7、publicvoidsetBackground(Colorc)

//設置組件的背景色8、publicvoidsetEnabled(booleanb)

//獲得組件的使能狀態。只有使能狀態的組件才能接受用戶輸入并引發事件9、publicvoidsetFont(Fontf)

//設置組件使用的字體10、publicvoidsetSize(intwidth,intweight)

//設置組件的大小11、publicvoidsetVisible(booleanb)

//設置組件是否可見的屬性。參數b為真時,組件在包括它的容器可見時也可見;否則組件不可見12、publicvoidsetForeground(Colorc)

//獲得組件的前景色13、publicvoidrequestFocus()

//使組件獲得注意的焦點標簽、按鈕與動作事件

1、標簽(Label)

是用戶不能修改只能查看其內容的文本顯示區域,它起到信息說明的作用。

創建標簽要求:創建標簽對象時應同時說明這個標簽中的字符串。

常用方法setText(新字符串)//用字符串修改標簽上的文本getText()//獲得標簽對象上的文本內容

產生事件

不能接受用戶的輸入,故不能引發事件,不是事件源。

2、按鈕(Button)按鈕本身不顯示信息,它一般對應一個事先定義好的功能操作,并對應一段程序。

創建按鈕要求:創建按鈕對象時可說明按鈕上的標簽字符串。如:Buttonbtn=newButton(“求和”);

常用方法setLabel(Strings)//把按鈕的標簽設置為字符串sgetLabel()//返回按鈕的標簽字符串

產生事件

可以引發動作事件。

3、動作事件(ActionEvent)ActionEvent類只包含一個事件,即執行動作事件ACTION_PERFORMED,該事件是引發某個動作執行的事件。

能觸發這個事件的動作包括:

●點擊按鈕;

●雙擊一個列表中的選項;

●選擇菜單項;

●在文本框中輸入回車。

ActionEvent類的重要方法:

publicStringgetActionCommand()

//返回引發事件的動作的命令名,該命令名可通過調用發生事件的事件源類的setActionCommand()方法指定

publicintgetModifiers()

//如果發生動作事件的同時用戶還按了Ctrl、Shift等功能鍵,則可以調用該方法來獲得和區別這些功能鍵。下面的語句將所定義的按鈕對象的動作命令名設為“命令1”并將它注冊給當前的監聽者:Buttonbtn=newButton(“按鈕標簽”);Btn.setActionCommand(“命令1”);Btn.addActionListener(this);動作事件的監聽者需要實現動作,監聽者接口的方法為:publicvoidactionPerformed(ActionEvente){if(e.getActionCommand()==“命令1”)……}若沒有設置動作命令名,則按鈕的缺省命令名就是按鈕的標簽。Buttonbtn=newButton(“按鈕標簽”);Btn.addActionListener(this);監聽者接口的方法為:publicvoidactionPerformed(ActionEvente){if(e.getActionCommand()==“按鈕標簽”)……}文本框、文本區域與文本事件

1、文本事件(TextEvent)

TextEvent類只包含一個事件,即代表文本區域中文本變化的事件TEXT_VALUE_CHANGED,在文本區域中改變文本內容。鍵入字符、刪除字符都將引發這個事件。

2、文本框與文本域(TextField與TextArea)

文本框(TextField)表示只能接收單行文本文本區域(TextArea)表示可以接收多行文本

創建文本框對象與文本區域對象要求:在創建文本組件對象的同時可以指定文本組件中的初始文本字符串。如:TextFieldin=newTextField(“學號”,8);

//創建能容納8個字符,初始字符串為“學號”的單行文本框又如:TextAreaout=newTextArea(10,50);

//創建一個10行50列的多行文本區域

常用方法setText()//用指定的字符串對文本區域顯示的內容賦值getText()//獲得用戶輸入的文本信息setEditable(booleanb)//設置文本區域為不可編輯的isEditable()//判斷當前文本區域上否可以被編輯

常用方法(續)select(intstart,intend)

//根據指定的起止位置選定一段文本selectAll()//選定文本區域中的所有文本setSelectStart()//設置選定文本的開始位置setSelectEnd()//設置選定文本的結束位置getSelectStart()//獲得選定文本的開始位置getSelectEnd()//獲得選定文本的結束位置getSelectText()//獲得選定的文本

以上方法為兩個類都能使用的方法。

常用方法(續)

●TextField

類特有的方法有:

selEchoChar(charc)

//設置文本框中的回顯字符

echoCharIsSet()

//判斷當前文本框是否處于不回顯狀態

getEchoChar()

//獲得當前文本框不回顯的屏蔽字符

●TextArea類特有的方法有:

append(Strings)

//在當前文本區域已有文本的后面添加參數

s

指定的文本內容

insert(Strings,intindex)

//將字符串

s

插入到已有文本的指定序號處

事件響應

這兩種類都能引發TextEvent對象代表的文本改變事件,在文本被刪除、添加、修改時引發。TextField還能引發ActionEvent事件,在用戶在文本框中回車時引發。

要響應TextEvent對象代表的文本改變事件,需要將文本框加入實現了

TextListener

接口的文本改變事件監聽者。

out.addTextListener(this);在監聽者內部要定義響應文本改變事件的方法:

publicvoidtextValueChanged(TextEvente)

要響應ActionEvent對象代表的動作事件,需要將文本框加入實現了

ActionListener

接口的動作事件監聽者。

in.addActionListener(this);在監聽者內部要定義響應動作事件的方法:

publicvoidactionPerformed(ActionEvente);//filename:TextComponentEvent.javaimportjava.applet.Applet;importjava.awt.*;importjava.awt.event.*;public

classTextComponentEventextendsAppletimplements

TextListener,ActionListener{TextFieldtf;TextAreata;

public

voidinit(){tf=newTextField(50);ta=newTextArea(10,50);add(tf);add(ta);tf.addActionListener(this);tf.addTextListener(this);}

public

voidtextValueChanged(TextEvente){

if(e.getSource()==tf)ta.setText(((TextField)e.getSource()).getText());}

public

voidactionPerformed(ActionEvente){

if(e.getSource()==tf)ta.setText("");}}

單、復選框,列表與選擇事件

1、選擇事件(ItemEvent)

ItemEvent

類只包含一個事件,即代表選擇項的選中狀態發生變化的事件ITEM_STATE_CHANGED。

能觸發這個事件的動作包括:●

改變列表類

List

對象選項的選中或不選中狀態;●改變下拉列表類

Choice

對象選項的選中或不選中狀態;●改變復選框類

Checkbox

對象的選中或不選中狀態;●改變檢測盒菜單項

CheckboxMenuItem

對象的選中或不選中狀態;

ItemEvent類的主要方法:

publicItemSelectablegetItemSeleceable()

//返回引發選中狀態變化的事件源

publicObjectgetItem()

//返回引發選中狀態變化事件的具體選擇項

publicintgetStateChange()

//返回具體的選中狀態變化類型,其返回值為ItemEvent類的幾個靜態常量之一:

①ItemEvent.SELECTED:代表選項被選中;②ItemEvent.DESELECTED:代表選項被放棄不選;

2、復選框(Checkbox)又稱為檢測盒,可以讓用戶作出多項選擇。是具有開關或真假值的按鈕。

創建復選框要求:創建復選框對象時可同時指明其文本說明標簽。構造方法:

●Checkbox()

//創建一個沒有標簽的復選框

●Checkbox(Strings)

//創建一個指定標簽的復選框●Checkbox(Strings,booleanb)

//創建一個指定標簽的復選框,并且可指定選取狀態●Checkbox(Strings,CheckboxGroupg,booleanb)

//創建一個指定標簽并且可指定選取狀態和復選框群組的復選框

常用方法StringgetLabel()

//返回確認框的標簽voidsetLabel(Stringlb1)//設置確認框的標簽

booleangetState()

//返回確認框的狀態voidsetState(booleanst)

//設置確認框的狀態為

st

事件響應

當用戶點擊復選框使其選中狀態發生變化時,就會引發ItemEvent類代表的選擇事件。

要響應ItemEvent對象代表的選擇事件,需要將復選框加入實現了ItemListener

接口的選擇事件監聽者。

backg.addItemListener(this);在監聽者內部要定義響應選擇事件的方法:

publicvoiditemStateChanged(ItemEvente)//filename:TextCheckbox.javaimportjava.awt.*;importjava.awt.event.*;importjava.applet.Applet;public

classTextCheckboxextendsAppletimplementsItemListener{Checkboxckb;Buttonbtn;

public

voidinit(){ckb=newCheckbox("背景色");btn=newButton("效果");add(ckb);add(btn);ckb.addItemListener(this);}public

voiditemStateChanged(ItemEvente){Checkboxtemp;

if(e.getItemSelectable()instanceofCheckbox){temp=(Checkbox)(e.getItemSelectable());

if(temp.getLabel()=="背景色")

if(temp.getState())btn.setBackground(Color.cyan);

else

btn.setBackground(Color.gray);}}}

3、單選按鈕組(CheckboxGroup)又稱為選項按鈕,是一組Checkbox復選框的集合,用戶只能從中選擇一個(即“多選一”)。其每一個都是具有開關或真假值的按鈕。

創建單選按鈕組構造方法:CheckboxGroup()

如:CheckboxGroupstyle=newCheckboxGroup();

p=newCheckbox(“普通”,true,style);

b=newCheckbox(“黑體”,false,style);

i=newCheckbox(“斜體”,false,style);

add(p);add(b);add(i);

常用方法CheckboxgetSelectedCheckbox()

//獲得群組中被選取的復選框voidsetSelectedCheckbox(Checkboxbox)

//設置群組中指定的復選框為被選取狀態

事件響應

該類不是java.awt.*包中的類,不能響應事件,但按鈕組中的每個復選框可以響應ItemEvent事件。響應方法與復選框事件的響應方法相同。//filename:TextCheckboxgroup.javaimportjava.awt.*;importjava.awt.event.*;importjava.applet.Applet;public

classTextCheckboxgroupextendsAppletimplementsItemListener{CheckboxGroupstyle;Checkboxp,b,i;Buttonbtn;

public

voidinit(){style=newCheckboxGroup();p=newCheckbox("普通",true,style);b=newCheckbox("黑體",false,style);i=newCheckbox("斜體",false,style);btn=newButton("效果");add(p);add(b);add(i);add(btn);p.addItemListener(this);b.addItemListener(this);i.addItemListener(this);}

public

voiditemStateChanged(ItemEvente){Checkboxtemp;FontoldF=btn.getFont();

if(e.getItemSelectable()instanceofCheckbox){temp=(Checkbox)(e.getItemSelectable());

if(temp.getLabel()=="普通")btn.setFont(newFont(oldF.getName(),Font.PLAIN,oldF.getSize()));

if(temp.getLabel()=="黑體")btn.setFont(newFont(oldF.getName(),Font.BOLD,oldF.getSize()));

if(temp.getLabel()=="斜體")btn.setFont(newFont(oldF.getName(),Font.ITALIC,oldF.getSize()));}}}

4、下拉列表(Choice)又稱為選項框。這種選項框一次只能顯示一個選項,要改變被選中的選項,可以單擊向下箭頭,從選項框中選擇一個選項。

創建選項框(即創建下拉列表)構造方法:Choice()

//建立一個空白的選擇菜單例如:

Choicesize=newChoice();

//創建下攔列表

size.add(“10”);

//為下拉列表加入選項

size.add(“14”);

size.add(“18”);

常用方法voidadd(Stringitem)

//在下拉列表中加入選項voidaddItem(Stringitem)

//在下拉列表中加入選項StringgetItem(intindex)//獲得下拉列表中指定位置的選項名稱intgetItemCount()//獲得下拉列表中所有選項的個數intgetSelectedIndex()//獲得下拉列表中被選取選項的位置

常用方法(續)StringgetSelectedItem()//獲得下拉列表中被選取選項的名稱voidinsert(Stringitem,intidx)

//插入新的選項到指定位置voidremove(intidx)

//刪除指定位置的下拉列表選項voidremove(Stringitem)

//刪除指定名稱的下拉列表選項voidremoveAll()

//刪除所有的下拉列表選項

常用方法(續)voidselect(intidx)

//選取下拉列表中指定位置的選項voidselect(Stringitem)

//選取下拉列表中指定名稱的選項

事件響應當用戶單擊下拉列表框的某個選項做出選擇時,就會引發ItemEvent類代表的選擇事件。

要響應ItemEvent對象代表的選擇事件,需要將下拉列表框加入實現了ItemListener

接口的選擇事件監聽者。

size.addItemListener(this);在監聽者內部要定義響應選擇事件的方法:

publicvoiditemStateChanged(ItemEvente)//filename:TestChoice.javaimportjava.awt.*;importjava.awt.event.*;importjava.applet.Applet;public

classTestChoiceextendsAppletimplementsItemListener{Choicesize;Buttonbtn;public

voidinit(){size=newChoice();size.add("10");size.add("14");size.add("18");add(size);btn=newButton("效果");add(btn);size.addItemListener(this);}

public

voiditemStateChanged(ItemEvente){Choicetemp;FontoldF;Strings;

intsi;

if(e.getItemSelectable()instanceofChoice){oldF=btn.getFont();temp=(Choice)(e.getItemSelectable());s=temp.getSelectedItem();si=Integer.parseInt(s);btn.setFont(newFont(oldF.getName(),oldF.getStyle(),si));}}}

5、列表框(List)列表框可以使用戶選擇多個選項,而且列表框的所有選項都是可見的。當選項數目超過列表框的可見區域的時候,則在列表框的右側出現一個滾動條,允許翻頁尋找。

創建列表框構造方法:

List()

//創建一個列表框,默認的狀態是顯示

4

個選項并且只允許單選List(introws)//創建一個列表框,默認的狀態是顯示指定數目的選項并且只允許單選List(introws,booleanb)//創建一個列表框,默認的狀態是顯示指定數目的選項并且可設置單復選

常用方法voidadd(Stringitem)

//加入選項到列表框中的最后一個位置voidaddItem(Stringitem,intindex)

//加入選項到列表框中指定的位置StringgetItem(intindex)//獲得列表框中指定位置的選項名稱intgetItemCount()//獲得下拉列表中所有選項的個數intgetSelectedIndex()//獲得下拉列表中被選取選項的位置

常用方法(續)intgetSelectedIndexs()//獲得下拉列表中所有被選取選項的位置StringgetSelectedItem()//獲得列表框中被選取選項的名稱StringgetSelectedItems()//獲得列表框中所有被選取選項的名稱

voidsetMultipleMode(booleanb)

//設置列表框是否可復選

voidreplaceItem(StringnewValue,intindex)

//用新的選項名稱替代指定位置的選項名稱

常用方法(續)voidselect(intidx)

//選取列表框中指定位置的選項voiddeselect(intidx)

//取消列表框中指定選項的選取狀態voidremove(intidx)

//刪除指定位置的列表框選項voidremove(Stringitem)

//刪除指定名稱的列表框選項voidremoveAll()

//刪除所有的列表框選項

事件響應列表框可以產生兩種事件:當用戶單擊列表框的某一個選項做出選擇時,就會引發ItemEvent類代表的選擇事件;當用戶雙擊列表框中的某個選項時,將產生ActionEvent類代表的動作事件。

要響應ItemEvent對象代表的選擇事件,需要將列表框加入實現了

ItemListener

接口的選擇事件監聽者。

out.addItemListener(this);在監聽者內部要定義響應選擇事件的方法:

publicvoiditemStateChanged(ItemEvente)

要響應ActionEvent對象代表的動作事件,需要將列表框加入實現了

ActionListener

接口的動作事件監聽者。

in.addActionListener(this);在監聽者內部要定義響應動作事件的方法:

publicvoidactionPerformed(ActionEvente);//filename:TestList.javaimportjava.awt.*;importjava.awt.event.*;importjava.applet.Applet;public

classTestListextendsAppletimplementsActionListener,ItemListener{ListmyList;Labelresult;public

voidinit(){myList=newList(4,true);myList.add("北京");myList.add("上海");myList.add("南京");myList.add("西安");myList.add("重慶");myList.add(“深圳”);result=newLabel("你雙擊了選項");add(myList);add(result);

myList.addItemListener(this);myList.addActionListener(this);}

public

voidactionPerformed(ActionEvente){if(e.getSource()==myList)result.setText("你雙擊了選項"+e.getActionCommand());}

public

voiditemStateChanged(ItemEvente){Listtemp;StringsList[];Stringmgr="";

if(e.getItemSelectable()instanceofList){temp=(List)(e.getItemSelectable());sList=temp.getSelectedItems();

for(inti=0;i<sList.length;i++)mgr=mgr+sList[i]+"";showStatus(mgr);

//是Applet對象的方法,用于將參數字符串顯示在Applet的狀態條中}}}

滾動條與調整事件

1、調整事件(AdjustmentEvent)AdjustmentEvent

類只包含一個事件——狀態變化事件

ADJUSTMENT_VALUE_CHANGED

事件,它是GUI組件狀態發生連續變化的事件。

能觸發這個事件的動作包括:●

操縱滾動條(Scrollbar)改變其滑塊位置;●操縱用戶自定義的Scrollbar對象的子類組件,改變其滑塊位置。

AdjustmentEvent類的主要方法:

publicAdjustablegetAdjustable()

//返回引發狀態變化事件的事件源

publicintgetVlaue()

//返回狀態變化后的滑塊對應的當前數值

publicintgetAdjustmentType()

//返回狀態變化事件的狀態變化類型,其返回值為

AdjustmentEvent類的幾個靜態常量之一

AdjustmentEvent類的靜態常量有:

①AdjustmentEvent.BLOCK_DECREMENT:

代表點擊滾動條下方引發塊狀下移的動作——塊減少;

②AdjustmentEvent.BLOCK_INCREMENT:

代表點擊滾動條上方引發塊狀上移的動作——塊增加;③AdjustmentEvent.TRACK:

代表拖動滾動條滑塊的動作;④AdjustmentEvent.UNIT_DECREMENT:

代表點擊滾動條下三角按鈕引發最小單位下移的動作(單位減少);⑤AdjustmentEvent.UNIT_INCREMENT:

代表點擊滾動條上三角按鈕引發最小單位上移的動作(單位增加);

2、滾動條(Scrollbar)滾動條是一種比較特殊的GUI組件,它能夠接受并體現邊疆的變化,稱為“調整”。

創建滾動條構造方法:

Scrollbar()

//建立一個垂直滾動條

Scrollbar(intorn)

//用orn指定的方式建立滾動條,orn表示所產生的滾動條是垂直狀的還是水平狀的,它可以是以下兩個值中的一個:

Scrollbar.HORIZONTAL

水平狀

Scrollbar.VERTICAL

垂直狀

Scrollbar(intorn,intval,intvis,intmin,intmax)

//參數orn決定方向,val為缺省值(即滑塊最初的顯示位置),vis參數確定滑塊的大小,min和max參數分別確定最小、最大值。

單位增量最小值最大值塊增量滾動槽滑塊滾動條的各組成部分

常用方法

voidsetUnitIncrement(intv)

//設置按上(下)滾動箭頭時滾動滑塊移動的單位數

voidsetBlockIncrement(intv)

//設置滾動槽被點擊時滑塊移動的單位數intgetUnitIncrement()

//獲得按上(下)滾動箭頭時滾動滑塊移動的單位數

intgetBlockIncrement()

//獲得滾動槽被點擊時滑塊移動的單位數

intgetValue()//獲得滾動滑塊當前的位置

事件響應滾動條可以引發AdjustmentEvent類代表的調整事件,當用戶通過各種方式改變滑塊位置從而改變其代表的數值時,都會引發調整事件。

要響應AdjustmentEvent對象代表的調整事件(即響應滾動條引發的調整事件),需要將滾動條加入實現了

AdjustmentListener

接口的調整事件監聽者。

mySlider.addAdjustmentListener(this);在監聽者內部要定義響應調整事件的方法:

publicvoidadjustmentValueChanged(AdjustmentEvente)//filename:ScrollbarDemo.javaimportjava.awt.*;importjava.awt.event.*;importjava.applet.Applet;public

class

ScrollbarDemo

extends

Applet

implements

AdjustmentListener{

ScrollbarmySlider;TextFieldsliderValue;

public

voidinit(){

sliderValue=newTextField(30);

mySlider=new

Scrollbar(Scrollbar.HORIZONTAL,0,1,0,Integer.MAX_VALUE);

mySlider.setUnitIncrement(1);mySlider.setBlockIncrement(50);add(sliderValue);add(mySlider);

mySlider.addAdjustmentListener(this);}

public

voidadjustmentValueChanged(AdjustmentEvente){

intvalue;

if(e.getAdjustable()==mySlider){value=e.getValue();sliderValue.setText(newInteger((int)value).toString());sliderValue.setBackground(newColor(value));}}}響應調整事件的方法//filename:ScrollbarDemo2.javaimportjava.awt.*;importjava.awt.event.*;importjava.applet.Applet;public

classScrollbarDemo2extendsAppletimplementsAdjustmentListener{Scrollbarr,g,b;TextFieldt1,t2,t3;Labell1,l2,l3,output;FontoldF;public

voidinit(){l1=newLabel("red(0~255)");t1=newTextField("0",20);t1.setEditable(false);r=newScrollbar(Scrollbar.HORIZONTAL,0,1,0,255);add(l1);add(t1);add(r);l2=newLabel("Green(0~255)");t2=newTextField("0",20);t2.setEditable(false);g=newScrollbar(Scrollbar.HORIZONTAL,0,1,0,255);add(l2);add(t2);add(g);l3=newLabel("blue(0~255)");t3=newTextField("0",20);t3.setEditable(false);b=newScrollbar(Scrollbar.HORIZONTAL,0,1,0,255);add(l3);add(t3);add(b);output=newLabel("祝大家新年快樂!");add(output);r.addAdjustmentListener(this);g.addAdjustmentListener(this);b.addAdjustmentListener(this);}

public

voidadjustmentValueChanged(AdjustmentEvente){intvalue,i1,i2,i3;Scrollbartemp;

if(e.getAdjustable()instanceofScrollbar){temp=(Scrollbar)(e.getAdjustable());

if(temp==r){value=temp.getValue();t1.setText(newInteger((int)value).toString());}

if(temp==g){value=temp.getValue();t2.setText(newInteger((int)value).toString());}

if(temp==b){value=temp.getValue();t3.setText(newInteger((int)value).toString());}oldF=output.getFont();output.setFont(newFont(oldF.getName(),oldF.getStyle(),36));i1=Integer.parseInt(t1.getText());i2=Integer.parseInt(t2.getText());i3=Integer.parseInt(t3.getText());output.setForeground(newColor(i1,i2,i3));}}}

布局設計組件產生以后,可調用

add()

方法將該組件放置到相應的容器中。如果還要在組件上增加一些控制,則需要使用布局設計知識。在AWT中,組件的布局設計是通過為組件設置布局編輯器來實現的。常用的布局編輯類有:●FlowLayout●

BorderLayout●

CardLayout●

GridLayout●

GridBagLayout每一種布局編輯類對應一種布局策略1、FlowLayout

(順序布局)FlowLayout是最基本的一種布局,是面板Panel和它的子類Applet缺省使用的布局編輯策略。它從左到右地安排組件排列順序,它提供下面的對齊方式:

構造方法:

FlowLayout

()

//創建居中對齊、水平與垂直間距為5的FlowLayout對象

FlowLayout

(intalign)

//以指定的對齊方式創建水平與垂直間距為5的FlowLayout對象FlowLayout

(intalign,inthg,intvg)

//以指定的對齊方式、水平與垂直間距創建FlowLayout對象

修改布局:

setLayout(new

FlowLayout

())

//將當前組件的布局設為FlowLayout布局(即順序布局)

2、BorderLayout(邊界布局)邊界布局

BorderLayout

把容器分為

5

個區:東(East)、南(South)、西(West)、北(North)和中央(Center),這幾個區按照從“上北下南,左西右東”的分布規律進行布局。可指定要加入的組件放入哪一個區域中,區域的大小由放入的組件大小來決定(最多只能容納5個組件)。

構造方法:

BorderLayout

()

//創建水平與垂直間距為0的BorderLayout對象

BorderLayout

(inthg,intvg)

//以指定的水平與垂直間距來創建BorderLayout對象例如,在applet的init()中定義了:

setLayout(newBorderLayout());可用方法add把組件放入applet中:

add(“East”,newButton(“東邊”));add(“South”,newButton(“南邊”));add(“West”,newButton(“西邊”));add(“North”,newButton(“北邊”));add(“Center”,newButton(“中央”));

//filename:BLayout.javaimportjava.awt.*;importjava.applet.Applet;

public

classBLayoutextendsApplet{

public

voidinit(){setLayout(newBorderLayout());add("East",newButton("東邊"));add("South",newButton("南邊"));add("West",newButton("西邊"));add("North",newButton("北邊"));add("Center",newButton("中央"));}}如果沒有在5個區域中都放置組件時,窗口的布局就會發生變化。例如:只在“北”、“中”、“東”等區域放置組件時,此時的結果為://filename:BLayout1.javaimportjava.awt.*;importjava.applet.Applet;

public

classBLayout1extendsApplet{

public

voidinit(){setLayout(newBorderLayout());add("North",newButton("北邊"));add(“Center”,newButton(“中央”));add("East",newButton("東邊"));}}3、CardLayout(卡片布局)卡片布局CardLayout把組件容器看成是—個卡片盒,而里面所有的組件都是盒中的卡片,但每次只能顯示最上面的一個卡片(組件)。CardLayout類提供一些方法來翻閱這些卡片(組件)。

構造方法:

CardLayout

()

//創建CardLayout布局對象

CardLayout

(inthg,intvg)

//以指定的水平與垂直間距來創建CardLayout對象

下面的方法用來翻閱這些卡片(組件):

使用CardLayout的一般步驟:(P283)創建CardLayout對象作為布局編輯器;使用容器的setLayout()方法為容器設置布局編輯器;調用容器的方法add()將組件加入容器,同時為組件分配一個字符串名字,以便布局編輯器根據這個名字調用顯示這個組件;add(字符串,組件);調用CardLayout的方法show()根據字符串名顯示一個組件:show(容器名,字符串);或按組件加入容器的順序顯示組件。

//filename:CardLayout1.javaimportjava.awt.*;importjava.applet.*;public

classCardLayout1extendsApplet//邊界版面中的卡片版面{CardLayoutcardlayout=newCardLayout();//卡片版面Panelcenterpanel,southpanel;//中央及南方控制板

public

voidinit(){centerpanel=newPanel();//建立中央控制板centerpanel.setLayout(cardlayout);//卡片版面centerpanel.add("card1",newLabel("card1"));//加入card1centerpanel.add("card2",newLabel("card2"));//加入card2centerpanel.add("card3",newLabel("card3"));//加入card3centerpanel.add("card4",newLabel("card4"));//加入card4southpanel=newPanel();//建立南方控制板southpanel.add(newButton("previous"));//加入previous按鈕southpanel.add(newButton("next"));//加入next按鈕

this.setLayout(newBorderLayout());//Frame為邊界版面

this.add("Center",centerpanel);//中央控制板加入Frame

this.add("South",southpanel);//南方控制板加入Frame}

public

booleanaction(Eventevt,Objectobj)//行動事件{

if(“previous”.equals(obj))//按previous按鈕cardlayout.previous(centerpanel);//顯示上一張卡片

else

if(“next”.equals(obj))//按next按鈕cardlayout.next(centerpanel);//顯示下一張卡片

return

true;}}//filename:CardLayout2.javaimportjava.awt.*;importjava.applet.*;importjava.awt.event.*;public

classCardLayout2extendsAppletimplementsActionListener{CardLayoutcardlayout=newCardLayout();Panelcenterpanel,southpanel;Buttonbn1,bn2;

public

voidinit(){centerpanel=newPanel();centerpanel.setLayout(cardlayout);centerpanel.add("card1",newLabel("card1"));centerpanel.add("card2",newLabel("card2"));centerpanel.add("card3",newLabel("card3"));centerpanel.add("card4",newLabel("card4"));

southpanel=newPanel();bn1=newButton("previous");bn2=newButton("next");southpanel.add(bn1);southpanel.add(bn2);bn1.addActionListener(this);bn2.addActionListener(this);

this.setLayout(newBorderLayout());

this.add("Center",centerpanel);

this.add("South",southpanel);}

public

voidactionPerformed(ActionEvente){if(e.getSource()==bn1)cardlayout.previous(centerpanel);

else

if(e.getSource()==bn2)cardlayout.next(centerpanel);}}4、GridLayout(網格布局)網格布局

GridLayout

是把容器區域分成若干個網格,每一個網格可以放置一個組件,這種布局方式非常適合數量龐大的組件。一般在使用

GridLayout

時,要設置行數和列數。

構造方法:

GridLayout

(introws,intcols)

//以指定的行列數創建GridLayout布局對象

CardLayout

(introws,intcols,inthg,intvg)

//以指定的行列數、水平與垂直間距來創建GridLayout對象

使用GridLayout的一般步驟:(P285)創建GridLayout對象作為布局編輯器,指定劃分網格的行數和列數;使用容器的setLayout()方法為容器設置布局編輯器;調用容器的方法add()將組件加入容器,組件填入的順序將按第一行第一個、第二個……進行。每個網格中都必須填入組件,若希望某個網格為空白,可為它加入一個空的標簽:add(newLabel());

//filename:GridLayout3.javaimportjava.awt.*;importjava.awt.event.*;importjava.applet.Applet;classeastpanelextends

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論