《Transparancy 6Java语言概述(benet).ppt》由会员分享,可在线阅读,更多相关《Transparancy 6Java语言概述(benet).ppt(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
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.a
3、wt 包中的类体系结构包中的类体系结构ComponentButtonCheckboxContainerChoiceCanvasTextComponentLabelPanelWindowAppletFrameDialogTextAreaTextField5 5容器容器可以存放组件的区域,可以存放组件的区域,可在容器上进行可在容器上进行绘制和着色绘制和着色 java.awt包中的包中的Container类可直接或间接类可直接或间接派生出两个常用容器:派生出两个常用容器:框架(框架(Frame类)类)和面板(和面板(Panel类)。类)。框架是一个带有边框的独立的窗口。框架是一个带有边框的独立的窗口
4、。面板是包含在窗口中的一个不带边框的面板是包含在窗口中的一个不带边框的区域。区域。6 6容器容器 框架框架框架是独立于框架是独立于Applet和浏览器的一个窗口。和浏览器的一个窗口。可以通过以下任一构造函数来创建:可以通过以下任一构造函数来创建:Frame():创建一个不含标题的标准窗口创建一个不含标题的标准窗口Frame(String Title):创建一个含有标题的窗口,创建一个含有标题的窗口,这个标题是由参数这个标题是由参数title指定的。指定的。当一个当一个Frame窗口被创建以后,需要调用窗口被创建以后,需要调用setSize()方法来设置窗口的大小,并调用方法来设置窗口的大小,并
5、调用setVisible()来显示窗口。来显示窗口。7 7容器容器-面板面板面板不是一个单独的窗口,它只是包含面板不是一个单独的窗口,它只是包含在窗口中的一个区域。在窗口中的一个区域。面板是可以将许多组件组合起来的一种面板是可以将许多组件组合起来的一种容器。容器。最简单的创建面板的方式就是通过面板最简单的创建面板的方式就是通过面板的构造函数的构造函数 Panel()Panel()来进行。来进行。必须将面板添加到窗体中。必须将面板添加到窗体中。8 8使用容器示例使用容器示例importjava.awt.*;classPanelTestextendsPanelpublicstaticvoidmai
6、n(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(String labeltext):新建一个包含给定文本的新建一个包含给定文本的标签
8、标签Label(String labeltext,int alignment):新建一个包新建一个包含给定对齐方式的标签,对齐方式可以为含给定对齐方式的标签,对齐方式可以为 Label.LEFT、Label.RIGHT 或或 Label.CENTERv通常用来指明项目的用途通常用来指明项目的用途v标签不可以被用户编辑标签不可以被用户编辑1212文本域文本域可以通过以下任一构造函数来创建:可以通过以下任一构造函数来创建:-TextField():新建一个文本新建一个文本域域 -TextField(int columns):新建一个包含给定列新建一个包含给定列数的文本数的文本域域 -TextFie
9、ld(String s):新建一个包含给定字符新建一个包含给定字符串的文本串的文本域域 -TextField(String s,int columns):新建一个包新建一个包含给定字符串和列数的文本含给定字符串和列数的文本域域 v一种用来输入文本的一种用来输入文本的GUI组件组件v只能接受一行输入只能接受一行输入1313标签和文本域使用示例标签和文本域使用示例importjava.awt.*;classTextLabelDemoextendsFrameLabellblName=newLabel(“名称名称:”);TextFieldtxtName=newTextField(20);publicT
10、extLabelDemo(Stringtitle)super(title);setLayout(newFlowLayout();add(lblName);add(txtName);publicstaticvoidmain(Stringargs)TextLabelDemot=newTextLabelDemo(正在测试组件!正在测试组件!);t.setSize(300,200);t.show();新建一个标签新建一个标签新建一个文本新建一个文本域域添加到窗口添加到窗口1414文本区文本区可以通过以下构造函数来创建:可以通过以下构造函数来创建:-TextArea():新建一个新建一个TextArea
11、-TextArea(int rows,int cols):新建一个包含给新建一个包含给定行数和列数的定行数和列数的TextArea-TextArea(String text,int rows,int cols):新建一新建一个包含给定字符串、行数和列数的个包含给定字符串、行数和列数的TextAreav要接受输入多行文本时使用要接受输入多行文本时使用v可以包括滚动条可以包括滚动条.TextAreatxtComment=newTextArea();add(txtComment);.1515按钮按钮可以使用以下任一构造函数来创建按钮:可以使用以下任一构造函数来创建按钮:-Button():新建一个空
12、的按钮新建一个空的按钮-Button(String text):新建一个包含给定字符串新建一个包含给定字符串的按钮的按钮v按钮是任何按钮是任何GUI都都不可或缺的组件不可或缺的组件v用来捕捉用户操作的最为简便的用来捕捉用户操作的最为简便的方式方式.ButtonbtnOk=newButton(确定确定!);ButtonbtnCancel=newButton(取消取消!);add(btnOk);add(btnCancel);.1616复选框复选框可以使用以下任一构造函数来创建复选框:可以使用以下任一构造函数来创建复选框:-Checkbox():创建一个空的复选框,且未被选创建一个空的复选框,且未被
13、选中中 -Checkbox(String text):创建一个用给定字符串创建一个用给定字符串作为标签的复选框,且未被选中作为标签的复选框,且未被选中 -Checkbox(String text,Boolean on):创建一个标签创建一个标签由参数由参数text指定的复选框,允许通过参数指定的复选框,允许通过参数on设定设定复选框的初始状态。复选框的初始状态。用于多选项的用户输入,用户用于多选项的用户输入,用户可以通过单击复选框来选定或可以通过单击复选框来选定或取消选定某选项。取消选定某选项。1717单选按钮单选按钮可以通过复选框组生成一系列互斥的复选可以通过复选框组生成一系列互斥的复选框框
14、,实现单选按钮功能。实现单选按钮功能。在一组单选按钮中只能选择一个按钮。在一组单选按钮中只能选择一个按钮。首先创建一个首先创建一个 CheckboxGroup 对象。对象。CheckboxGroupcg=newCheckboxGroup();然后再创建各单选按钮。然后再创建各单选按钮。Checkboxmale=Checkbox(男男,cg,true);Checkboxfemale=Checkbox(女女,cg,false);1818复选框和单选按钮使用示例复选框和单选按钮使用示例importjava.awt.*;classQualificationextendsFrameCheckboxt1=
15、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);Labellb1=newLabel(您的学历为:您的
16、学历为:);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=newQualification(学识!学识!);q.setSi
17、ze(400,250);q.show();将单选按钮添将单选按钮添加到窗体加到窗体将复选框添加到窗体将复选框添加到窗体1919选择框选择框用用Choice类可以创建一个选择框类可以创建一个选择框 Choicemoviestars=newChoice();通过通过 addItem()方法可以添加项目方法可以添加项目moviestars.addItem(安东尼奥安东尼奥.班德拉斯班德拉斯);moviestars.addItem(莱昂纳多莱昂纳多.迪卡普尼奥迪卡普尼奥);moviestars.addItem(桑德桑德.布洛克布洛克);moviestars.addItem(休休.葛兰特葛兰特);mov
18、iestars.addItem(朱莉亚朱莉亚.罗萡茨罗萡茨);用来向用户显示一个选择列用来向用户显示一个选择列表表2020布局管理器布局管理器用户界面上的组件可以按不同方式排列。用户界面上的组件可以按不同方式排列。Java使用布局管理器来管理这些排列方式使用布局管理器来管理这些排列方式。每当需要重新调整屏幕大小或重新绘制屏每当需要重新调整屏幕大小或重新绘制屏幕上任一项目时,就要用到布局管理器。幕上任一项目时,就要用到布局管理器。AWT提供一组用来进行布局管理的类,称提供一组用来进行布局管理的类,称为布局管理器或布局。所有布局都实现为布局管理器或布局。所有布局都实现 LayoutManager接
19、口。接口。2121布局类型布局类型Java中的中的布局类型包括以下几种:布局类型包括以下几种:-FlowLayout(流式布局)流式布局)-BorderLayout(边界布局)(边界布局)-GridLayout(网格布局)(网格布局)-GridBagLayout(网格包布局)(网格包布局)-CardLayout(卡片布局)(卡片布局)2222布局类型的选用布局类型的选用每个布局管理器都有自己特定的用途。每个布局管理器都有自己特定的用途。-要按行和列显示几个同样大小的组件,要按行和列显示几个同样大小的组件,GridLayout 会比较合会比较合-要在尽可能大的空间里显示一个组件,就要要在尽可能大
20、的空间里显示一个组件,就要选择选择 BorderLayout 或或 GridBagLayout 2323如何设置布局如何设置布局每个容器(每个容器(Container对象)都有一个与对象)都有一个与它相关的缺省的布局管理器。它相关的缺省的布局管理器。-Applet 的缺省布局是的缺省布局是 FlowLayout 在没有设置新的布局前,在容器中添加在没有设置新的布局前,在容器中添加组件都按照该容器的缺省布局排列。组件都按照该容器的缺省布局排列。可以通过可以通过setLayout()方法为容器设置新的方法为容器设置新的布局。布局。2424FlowLayoutFlowLayout的构造函数有:的构造
21、函数有:-FlowLayout():生成一个默认的流式布局生成一个默认的流式布局-FlowLayout(int alignment):可以设定每一行组可以设定每一行组件的对齐方式件的对齐方式-FlowLayout(int alignment,int horz,int vert):可以可以设定组件间的水平和垂直距离设定组件间的水平和垂直距离vApplet和面板的缺省布局和面板的缺省布局v组件从左上角开始按从左组件从左上角开始按从左到右、从上到下的方式排列到右、从上到下的方式排列FlowLayoutmylayout=newFlowLayout();FlowLayoutexLayout=newFlo
22、wLayout(FlowLayout.RIGHT);setLayout(exlayout);/为容器为容器设置新布局设置新布局 2525BorderLayout 2-1下面是下面是BorderLayout所定义的构造函数:所定义的构造函数:-BorderLayout():生成默认的边界布局生成默认的边界布局-BorderLayout(int horz,int vert):可可以以设设定定组组件件间间的水平和垂直距离的水平和垂直距离 v窗口窗口、框架和对话框框架和对话框等的缺省布局等的缺省布局v组件可被置于容器的组件可被置于容器的北、南、东、西或中间北、南、东、西或中间位置位置2626Borde
23、rLayout 2-2 BorderLayout 类定义了几个常量值以指定相类定义了几个常量值以指定相应区域:应区域:-BorderLayout.NORTH 对应容器的顶部对应容器的顶部-BorderLayout.EAST 对应容器的右部对应容器的右部-BorderLayout.SOUTH 对应容器的底部对应容器的底部-BorderLayout.WEST 对应容器的左部对应容器的左部-BorderLayout.CENTER 对应容器的中部对应容器的中部加入组件方法:加入组件方法:voidadd(ComponentObj,intregion);.setLayout(newBorderLayout
24、();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,BorderLayou
25、t.CENTER);.2727GridLayoutGridLayout的构造函数如下所示:的构造函数如下所示:-GridLayout():生成一个单列的网格布局生成一个单列的网格布局 -GridLayout(int row,int col):生生成成一一个个设设定定行行数数和和列列数的网格布局数的网格布局 -GridLayout(int row,int col,int horz,int vert):可可以以设设置组件之间的水平和垂直间隔置组件之间的水平和垂直间隔 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个可选值。缺省值为:个可选值。
29、缺省值为:GridBagConstraints.CENTER GridBagConstraints 类类2-23131CardLayout可存储几个不同的布局。可存储几个不同的布局。每个布局就像是一个卡片组中的一张卡片。每个布局就像是一个卡片组中的一张卡片。在一个给定的时间总会有一张卡片在顶层。在一个给定的时间总会有一张卡片在顶层。卡片通常为一个卡片通常为一个 Panel 对象。对象。每当需要许多面板切换,而每个面板需要每当需要许多面板切换,而每个面板需要显示为不同布局时,可以使用卡片布局。显示为不同布局时,可以使用卡片布局。3232总结总结 3-1抽象窗口工具包(抽象窗口工具包(AWT)是一
30、组类,它允是一组类,它允许创建图形用户界面,并能够通过键盘和鼠许创建图形用户界面,并能够通过键盘和鼠标响应用户的操作。标响应用户的操作。容器指可以存放组件的区域,两种常用容器容器指可以存放组件的区域,两种常用容器类:框架(类:框架(Frame类)和面板(类)和面板(Panel类)。类)。框架是一个单独的窗口,而面板只是包含在框架是一个单独的窗口,而面板只是包含在窗口中的一个区域。窗口中的一个区域。AWT支持下列类型的组件:标签、文本域、支持下列类型的组件:标签、文本域、文本区、按钮、复选框、列表框等。文本区、按钮、复选框、列表框等。3333总结总结 3-2布局管理器类提供控制布局管理器类提供控
31、制 GUI 组件物理布组件物理布局的一种方式。局的一种方式。以下是几种不同类型的布局:以下是几种不同类型的布局:-FlowLayout-BorderLayout-CardLayout-GridLayout-GridBagLayout布局可通过布局可通过 setLayout()方法进行设置。方法进行设置。3434总结总结 3-3FlowLayout 是是 Applet 和和 面板的缺省布局管面板的缺省布局管理器。组件从左上角到右下角进行排列。理器。组件从左上角到右下角进行排列。BorderLayout 按北、南、东、西、中的不同按北、南、东、西、中的不同区域划分将组件排列于容器中。区域划分将组件排列于容器中。GridLayout 将组件按行和列排列。所有组件将组件按行和列排列。所有组件大小相同。大小相同。GridBagLayout 能将组件放置在最精确的位能将组件放置在最精确的位置。各组件的大小可以不同。置。各组件的大小可以不同。CardLayout可存储几个不同的布局管理器可存储几个不同的布局管理器 3535