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

提交评论