《Transparancy 6Java语言概述(benet)》由会员分享,可在线阅读,更多相关《Transparancy 6Java语言概述(benet)(35页珍藏版)》请在金锄头文库上搜索。
1、Version 3.0GUI 编程编程第六章第六章回顾回顾运行时发生的错误称为异常。运行时发生的错误称为异常。Java使用使用try和和catch块来处理异常。块来处理异常。try块中的语句引发异常,而块中的语句引发异常,而catch块则处理块则处理异常。异常。可以同时使用多个可以同时使用多个catch块来分别处理各块来分别处理各种异常类型。种异常类型。关键字关键字throws用于列出一个方法可能引发用于列出一个方法可能引发的异常类型。的异常类型。Java中的垃圾收集就是将分配给对象但不中的垃圾收集就是将分配给对象但不再使用的内存回收或释放的过程。再使用的内存回收或释放的过程。2 2目标目标了
2、解了解AWT包及其组件包及其组件掌握如何创建掌握如何创建GUI程序程序掌握掌握AWT组件的基本用法组件的基本用法掌握如何使用布局管理器构造复杂的布局掌握如何使用布局管理器构造复杂的布局3 3抽象窗口工具包抽象窗口工具包图形用户界面图形用户界面( (GUI) )可以通过键盘或鼠标来可以通过键盘或鼠标来响应用户的操作。响应用户的操作。抽象窗口工具包抽象窗口工具包( (AWT) )是一组是一组Java类,此组类,此组Java类允许创建图形用户界面类允许创建图形用户界面( (GUI) )。AWT提供用于创建生动而高效的提供用于创建生动而高效的GUI的各种的各种组件组件。4 4java.awt包中的类体
3、系结构包中的类体系结构ComponentButtonCheckboxContainerChoiceCanvasTextComponentLabelPanelWindowAppletFrameDialogTextAreaTextField5 5容器容器可以存放组件的区域,可以存放组件的区域,可在容器上进行可在容器上进行绘制和着色绘制和着色 java.awt包中的包中的Container类可直接或间类可直接或间接派生出两个常用容器:接派生出两个常用容器:框架(框架(Frame类)和面板(类)和面板(Panel类)。类)。框架是一个带有边框的独立的窗口。框架是一个带有边框的独立的窗口。面板是包含在窗
4、口中的一个不带边框的面板是包含在窗口中的一个不带边框的区域。区域。6 6容器容器框架框架框架是独立于框架是独立于Applet和浏览器的一个窗口。和浏览器的一个窗口。可以通过以下任一构造函数来创建:可以通过以下任一构造函数来创建:Frame(): :创建一个不含标题的标准窗口创建一个不含标题的标准窗口Frame(StringTitle): : 创建一个含有标题的窗创建一个含有标题的窗口,这个标题是由参数口,这个标题是由参数title指定的。指定的。当一个当一个Frame窗口被创建以后,需要调用窗口被创建以后,需要调用setSize()方法来设置窗口的大小,并调用方法来设置窗口的大小,并调用set
5、Visible()来显示窗口。来显示窗口。7 7容器容器-面板面板面板不是一个单独的窗口,它只是包含面板不是一个单独的窗口,它只是包含在窗口中的一个区域。在窗口中的一个区域。面板是可以将许多组件组合起来的一种面板是可以将许多组件组合起来的一种容器。容器。最简单的创建面板的方式就是通过面板最简单的创建面板的方式就是通过面板的构造函数的构造函数 Panel() Panel() 来进行。来进行。 必须将面板添加到窗体中。必须将面板添加到窗体中。8 8使用容器示例使用容器示例importjava.awt.*;classPanelTestextendsPanelpublicstaticvoidmain(
6、Stringargs)PanelTestp=newPanelTest(); Framef=newFrame(正在测试面板!正在测试面板!); f.add(p); f.setSize(300,200); f.setVisible(true);使用使用GUIGUI组件必组件必须须导入导入该包该包将面板添加将面板添加到到框架窗体中框架窗体中9 9AWT组件组件组件指可以放置在用户界面上的任何东西组件指可以放置在用户界面上的任何东西, ,可以将组件设置为可见或重新调整其大小。可以将组件设置为可见或重新调整其大小。 AWT支持的组件:标签、文本域、文本区、支持的组件:标签、文本域、文本区、按钮、复选框、
7、选择框等。按钮、复选框、选择框等。高级组件包括滚动条、滚动窗格和对话框。高级组件包括滚动条、滚动窗格和对话框。向窗口加入一个组件:首先生成所需组件的向窗口加入一个组件:首先生成所需组件的实例,然后调用实例,然后调用add()方法,此方法是在方法,此方法是在Container类中定义的。类中定义的。1010不同组件不同组件标标签签文本域文本域复选框复选框单选按钮单选按钮文本区文本区按钮按钮1111标签标签可以通过以下任一构造函数来创建:可以通过以下任一构造函数来创建:Label() : : 新建一个空标签新建一个空标签Label(Stringlabeltext): : 新建一个包含给定文新建一个
8、包含给定文本的标签本的标签Label(Stringlabeltext,intalignment) : :新建新建一个包含给定对齐方式的标签,对齐方式可以一个包含给定对齐方式的标签,对齐方式可以为为 Label.LEFT、Label.RIGHT 或或 Label.CENTERv通常用来指明项目的用途通常用来指明项目的用途v标签不可以被用户编辑标签不可以被用户编辑1212文本域文本域可以通过以下任一构造函数来创建:可以通过以下任一构造函数来创建:-TextField() : : 新建一个文本新建一个文本域域 -TextField(intcolumns) : : 新建一个包含给新建一个包含给定列数的
9、文本定列数的文本域域 -TextField(Strings) : : 新建一个包含给定字新建一个包含给定字符串的文本符串的文本域域 -TextField(Strings,intcolumns) : : 新建新建一个包含给定字符串和列数的文本一个包含给定字符串和列数的文本域域 v一种用来输入文本的一种用来输入文本的GUI组组件件v只能接受一行输入只能接受一行输入1313标签和文本域使用示例标签和文本域使用示例importjava.awt.*;classTextLabelDemoextendsFrameLabellblName=newLabel(“名称名称:”);TextFieldtxtName=
10、newTextField(20);publicTextLabelDemo(Stringtitle)super(title);setLayout(newFlowLayout();add(lblName);add(txtName);publicstaticvoidmain(Stringargs)TextLabelDemot=newTextLabelDemo(正在测试组件!正在测试组件!);t.setSize(300,200);t.show();新建一个标签新建一个标签新建一个文本新建一个文本域域添加到窗口添加到窗口1414文本区文本区可以通过以下构造函数来创建:可以通过以下构造函数来创建:-Tex
11、tArea() : : 新建一个新建一个TextArea-TextArea(introws,intcols) : : 新建一个包新建一个包含给定行数和列数的含给定行数和列数的TextArea-TextArea(Stringtext,introws,intcols) : : 新建一个包含给定字符串、行数和列数的新建一个包含给定字符串、行数和列数的TextAreav要接受输入多行文本时使用要接受输入多行文本时使用v可以包括滚动条可以包括滚动条.TextAreatxtComment=newTextArea();add(txtComment);.1515按钮按钮可以使用以下任一构造函数来创建按钮:可以
12、使用以下任一构造函数来创建按钮:-Button():新建一个空的按钮新建一个空的按钮-Button(Stringtext):新建一个包含给定字新建一个包含给定字符串的按钮符串的按钮v按钮是任何按钮是任何GUI都都不可或缺的组不可或缺的组件件v用来捕捉用户操作的最为简便的用来捕捉用户操作的最为简便的方式方式.ButtonbtnOk=newButton(确定确定!);ButtonbtnCancel=newButton(取消取消!);add(btnOk);add(btnCancel);.1616复选框复选框可以使用以下任一构造函数来创建复选框:可以使用以下任一构造函数来创建复选框:-Checkbox
13、():创建一个空的复选框,且未被创建一个空的复选框,且未被选中选中-Checkbox(Stringtext):创建一个用给定字创建一个用给定字符串作为标签的复选框,且未被选中符串作为标签的复选框,且未被选中-Checkbox(Stringtext,Booleanon):创建创建一个标签由参数一个标签由参数text指定的复选框,允许通过参指定的复选框,允许通过参数数on设定复选框的初始状态。设定复选框的初始状态。用于多选项的用户输入,用户用于多选项的用户输入,用户可以通过单击复选框来选定或可以通过单击复选框来选定或取消选定某选项。取消选定某选项。1717单选按钮单选按钮可以通过复选框组生成一系列
14、互斥的复选可以通过复选框组生成一系列互斥的复选框框, ,实现单选按钮功能。实现单选按钮功能。 在一组单选按钮中只能选择一个按钮。在一组单选按钮中只能选择一个按钮。首先创建一个首先创建一个CheckboxGroup对象。对象。CheckboxGroupcg=newCheckboxGroup();然后再创建各单选按钮。然后再创建各单选按钮。Checkboxmale=Checkbox(男男,cg,true);Checkboxfemale=Checkbox(女女,cg,false);1818复选框和单选按钮使用示例复选框和单选按钮使用示例importjava.awt.*;classQualificat
15、ionextendsFrameCheckboxt1=newCheckbox(VisualBasic);Checkboxt2=newCheckbox(VisualC+);Checkboxt3=newCheckbox(Java);CheckboxGroupcg=newCheckboxGroup();Checkboxr1=newCheckbox(专科专科,cg,false);Checkboxr2=newCheckbox(本科本科,cg,false); Checkboxr3=newCheckbox(硕士硕士,cg,false);Checkboxr4=newCheckbox(博士博士,cg,false)
16、;Labellb1=newLabel(您的学历为:您的学历为:);Labellb2=newLabel(您精通的语言为:您精通的语言为:);新建复选框新建复选框新建一个复新建一个复选框组选框组添加添加单选按单选按钮钮publicQualification(Strings)super(s);setLayout(newGridLayout(10,1);add(lb1);add(r1);add(r2);add(r3); add(r4);add(lb2);add(t1);add(t2);add(t3);publicstaticvoidmain(Stringargs)Qualificationq=newQ
17、ualification(学识!学识!);q.setSize(400,250);q.show();将单选按钮添将单选按钮添加到窗体加到窗体将复选框添加到窗体将复选框添加到窗体1919选择框选择框用用Choice类可以创建一个选择框类可以创建一个选择框 Choicemoviestars=newChoice(); 通过通过addItem()方法可以添加项目方法可以添加项目moviestars.addItem(安东尼奥安东尼奥.班德拉斯班德拉斯);moviestars.addItem(莱昂纳多莱昂纳多.迪卡普尼奥迪卡普尼奥);moviestars.addItem(桑德桑德.布洛克布洛克);movie
18、stars.addItem(休休.葛兰特葛兰特);moviestars.addItem(朱莉亚朱莉亚.罗萡茨罗萡茨); 用来向用户显示一个选择列用来向用户显示一个选择列表表2020布局管理器布局管理器用户界面上的组件可以按不同方式排列。用户界面上的组件可以按不同方式排列。Java使用布局管理器来管理这些排列方式使用布局管理器来管理这些排列方式。每当需要重新调整屏幕大小或重新绘制屏每当需要重新调整屏幕大小或重新绘制屏幕上任一项目时,就要用到布局管理器。幕上任一项目时,就要用到布局管理器。AWT提供一组用来进行布局管理的类,称提供一组用来进行布局管理的类,称为布局管理器或布局。所有布局都实现为布局
19、管理器或布局。所有布局都实现 LayoutManager接口。接口。2121布局类型布局类型Java中的中的布局类型包括以下几种:布局类型包括以下几种:-FlowLayout(流式布局)流式布局)-BorderLayout(边界布局)(边界布局)-GridLayout(网格布局)(网格布局)-GridBagLayout(网格包布局)(网格包布局)-CardLayout(卡片布局)(卡片布局)2222布局类型的选用布局类型的选用每个布局管理器都有自己特定的用途。每个布局管理器都有自己特定的用途。-要按行和列显示几个同样大小的组件,要按行和列显示几个同样大小的组件,GridLayout会比较合会比
20、较合-要在尽可能大的空间里显示一个组件,就要要在尽可能大的空间里显示一个组件,就要选择选择BorderLayout或或GridBagLayout2323如何设置布局如何设置布局每个容器(每个容器(Container对象)都有一个与对象)都有一个与它相关的缺省的布局管理器。它相关的缺省的布局管理器。 -Applet的缺省布局是的缺省布局是FlowLayout在没有设置新的布局前,在容器中添加在没有设置新的布局前,在容器中添加组件都按照该容器的缺省布局排列。组件都按照该容器的缺省布局排列。 可以通过可以通过setLayout()方法为容器设置新方法为容器设置新的布局。的布局。2424FlowLay
21、outFlowLayout的构造函数有:的构造函数有:-FlowLayout():生成一个默认的流式布局生成一个默认的流式布局-FlowLayout(intalignment):可以设定每一可以设定每一行组件的对齐方式行组件的对齐方式-FlowLayout(intalignment,inthorz,intvert):可以设定组件间的水平和垂直距离可以设定组件间的水平和垂直距离vApplet和面板的缺省布局和面板的缺省布局v组件从左上角开始按从左组件从左上角开始按从左到右、从上到下的方式排列到右、从上到下的方式排列FlowLayoutmylayout=newFlowLayout();FlowLa
22、youtexLayout=newFlowLayout(FlowLayout.RIGHT);setLayout(exlayout);/为容器为容器设置新布局设置新布局2525BorderLayout2-1下面是下面是BorderLayout所定义的构造函数:所定义的构造函数: -BorderLayout():生成默认的边界布局生成默认的边界布局 -BorderLayout(inthorz,intvert):可可以以设设定定组件间的水平和垂直距离组件间的水平和垂直距离v窗口窗口、框架和对话框框架和对话框等的缺省布局等的缺省布局v组件可被置于容器的组件可被置于容器的北、南、东、西或中间北、南、东、西
23、或中间位置位置2626BorderLayout2-2BorderLayout类定义了几个常量值以指定类定义了几个常量值以指定相应区域:相应区域:-BorderLayout.NORTH对应容器的顶部对应容器的顶部-BorderLayout.EAST对应容器的右部对应容器的右部-BorderLayout.SOUTH对应容器的底部对应容器的底部-BorderLayout.WEST对应容器的左部对应容器的左部-BorderLayout.CENTER对应容器的中部对应容器的中部加入组件方法:加入组件方法: voidadd(ComponentObj,intregion);.setLayout(newBor
24、derLayout(); ButtonbtnEast=newButton(东东);ButtonbtnWest=newButton(西西);ButtonbtnNorth=newButton(北北);ButtonbtnSouth=newButton(南南);ButtonbtnCenter=newButton(中中);add(btnEast,BorderLayout.EAST);add(btnWest,BorderLayout.WEST);add(btnNorth,BorderLayout.NORTH);add(btnSouth,BorderLayout.SOUTH);add(btnCenter,B
25、orderLayout.CENTER);.2727GridLayoutGridLayout的构造函数如下所示:的构造函数如下所示: -GridLayout():生成一个单列的网格布局生成一个单列的网格布局-GridLayout(introw,intcol):生生成成一一个个设设定定行行数数和列数的网格布局和列数的网格布局-GridLayout(introw,intcol,inthorz,intvert):可以设置组件之间的水平和垂直间隔可以设置组件之间的水平和垂直间隔 v用于将容器区域划分用于将容器区域划分为一个矩形网格为一个矩形网格v组件按行和列排列组件按行和列排列. Buttonbtn;/
26、声明按钮数组声明按钮数组Stringstr=1,2,3,4,5,6,7,8,9;setLayout(newGridLayout(3,3);btn=newButtonstr.length;/创建按钮数组创建按钮数组for(inti=0;istr.length;i+)btni=newButton(stri);add(btni);2828GridBagLayout通过使用以下语法容器可获得通过使用以下语法容器可获得GridBagLayout:GridBagLayoutgb=newGridBagLayout();ContainerName.setLayout(gb);要使用此布局,必须提供各组件的大小
27、和布要使用此布局,必须提供各组件的大小和布局等信息。局等信息。GridBagConstraints类中包含类中包含GridBagLayout类用来定位及调整组件大类用来定位及调整组件大小所需的全部信息。小所需的全部信息。v组件大小不必相同组件大小不必相同v组件按行和列排列组件按行和列排列v放置顺序不一定为从左放置顺序不一定为从左至右和由上至下至右和由上至下2929GridBagConstraints类类2-1成员变量列表:成员变量列表:-gridx,gridy:指定组件放置于哪个单元中指定组件放置于哪个单元中-gridwidth,gridheight:指定指定组件将占用多组件将占用多少行和多少
28、列少行和多少列-weightx,weighty:指定在一个指定在一个GridBagLayout中应如何分配空间中应如何分配空间,这些变这些变量的缺省值为量的缺省值为0-ipadx,ipady:指定组件的最小高度和宽度指定组件的最小高度和宽度3030成员变量列表:成员变量列表:-fill:指定在单元大于组件的情况下指定在单元大于组件的情况下,组件如组件如何填充此单元何填充此单元,共有共有4可选值。缺省值为:可选值。缺省值为:GridBagConstraints.NONE-anchor:指定将组件放置在单元中的位置,指定将组件放置在单元中的位置,共有共有9个可选值。缺省值为:个可选值。缺省值为:G
29、ridBagConstraints.CENTER GridBagConstraints类类2-23131CardLayout可存储几个不同的布局。可存储几个不同的布局。每个布局就像是一个卡片组中的一张卡片。每个布局就像是一个卡片组中的一张卡片。在一个给定的时间总会有一张卡片在顶层。在一个给定的时间总会有一张卡片在顶层。卡片通常为一个卡片通常为一个Panel对象。对象。每当需要许多面板切换,而每个面板需要每当需要许多面板切换,而每个面板需要显示为不同布局时,可以使用卡片布局。显示为不同布局时,可以使用卡片布局。3232总结总结3-1抽象窗口工具包(抽象窗口工具包(AWT)是一组类,它允是一组类,
30、它允许创建图形用户界面,并能够通过键盘和鼠许创建图形用户界面,并能够通过键盘和鼠标响应用户的操作。标响应用户的操作。容器指可以存放组件的区域,两种常用容器容器指可以存放组件的区域,两种常用容器类:框架(类:框架(Frame类)和面板(类)和面板(Panel类)。类)。框架是一个单独的窗口,而面板只是包含在框架是一个单独的窗口,而面板只是包含在窗口中的一个区域。窗口中的一个区域。AWT支持下列类型的组件:标签、文本域、支持下列类型的组件:标签、文本域、文本区、按钮、复选框、列表框等。文本区、按钮、复选框、列表框等。3333总结总结3-2布局管理器类提供控制布局管理器类提供控制GUI组件物理布组件
31、物理布局的一种方式。局的一种方式。以下是几种不同类型的布局:以下是几种不同类型的布局:-FlowLayout-BorderLayout-CardLayout-GridLayout-GridBagLayout布局可通过布局可通过setLayout()方法进行设置。方法进行设置。3434总结总结3-3FlowLayout是是Applet和和面板的缺省布局面板的缺省布局管理器。组件从左上角到右下角进行排列。管理器。组件从左上角到右下角进行排列。BorderLayout 按北、南、东、西、中的不按北、南、东、西、中的不同区域划分将组件排列于容器中。同区域划分将组件排列于容器中。GridLayout将组件按行和列排列。所有组将组件按行和列排列。所有组件大小相同。件大小相同。GridBagLayout能将组件放置在最精确的能将组件放置在最精确的位置。各组件的大小可以不同。位置。各组件的大小可以不同。CardLayout可存储几个不同的布局管理器可存储几个不同的布局管理器3535