第12章-图形用户界面_第1页
第12章-图形用户界面_第2页
第12章-图形用户界面_第3页
第12章-图形用户界面_第4页
第12章-图形用户界面_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第12章图形用户界面主讲:胡伏湘复习提问1、什么会产生异常?2、Java定义的标准异常类有哪几个?3、异常处理的语句结构是怎样的?4、如何抛出异常?本章提要主要知识点:图形用户界面的主要特征;AWT组件的一般功能;Frame类和Panel类的用法;窗口布局管理

学习目标:掌握图形用户界面(GUI)的组件构成,主要的容器的功能及组件布局管理方法,能够运用运用AWT的基本组件设计图形用户界面。12.1分析图形界面特征12.1.1AWT组件的一般功能

在AWT(AbstractWindowToolkit)的概念中,窗口系统中所显示的各种对象统称为“组件”(Component)。组件有基本组件和容器组件之分。顾名思义,基本组件是不可再分割的组件,基本组件各自都有它们特定的功能。基本组件是构成图形用户界面的基本元素。除了菜单以外的所有组件都是Component类的子类。从Component类中,它们继承了大量的功能,Component类为实现所有的绘画功能及事件处理提供了基础。参见P79-图5-1。12.1分析图形界面特征12.1.1AWT组件的一般功能

1.大小和位置可以控制:所有组件的显示尺寸和位置都是由布局管理器控制的。组件本身也提供了一些方法改变组件的尺寸,将组件放到适当的位置以及报告组件的合适和最小尺寸。组件还提供了一些方法用于返回关于组件当前尺寸和位置的信息。2.外形可以控制:颜色、字体、效果3.基本绘图功能的支持:Component类提供了paint()、update()和repaint()方法,这些方法使组件能够在屏幕上将自己画出来。4.组件状态可以控制:Component类定义了handleEvent()等一组方法,例如:action()方法,用来处理指定类型的事件;Component类也提供了设置并获得键盘光标,使键盘能够对组件进行控制等方法。12.1分析图形界面特征基本组件中文名称功能Button按钮完成一个命令CheckBox复选框可以同时进行多个选择CheckBoxGroup单选框只能在一组中选择一项Choice下拉式列表创建一个弹出式的选择菜单List列表创建一个选择列表Menu菜单创建菜单系统TextField文本框输入单行文字Label标签在标签内绘制字符Canvas画布进行绘画TextArea多行文本框输入多行文字ScrollBar滚动条在指定的范围内选择一个值12.2创建图形界面容器12.2.1Frame框架类

AWT的Window类使用户可以创建独立于包含App1et的浏览器窗口的窗口。Window类提供了用于窗口操作的基本功能。通常,用户使用Window类的子类Frame类和Dialog类。Frame类使用户可以创建带有菜单条的全功能窗口,即框架;Dialog类用于创建和管理对话框。12.2创建图形界面容器12.2.1Frame框架类的构造方法:newFrame()

//创建不带标题的框架newFrame(Strings)

//创建带有指定标题的框架说明:当一个Frame窗口被创建以后,需要调用setSize()方法来设置窗口的大小,并调用setVisible(true)方法来显示窗口12.2创建图形界面容器12.2.1框架类示例importjava.awt.*;//此包必须引入publicclassMyFrameextendsFrame{//继承Frame类publicstaticvoidmain(Stringargs[]){

MyFrame

fr=newMyFrame("Pleaseseethere!Thisisaframe");fr.setSize(400,200);//窗口大小为400*200

fr.setBackground(Color.blue);//背景为兰色

fr.setVisible(true);//设置窗口可见}publicMyFrame(String

str){

super(str);//调用父类的构造方法}}12.2创建图形界面容器12.2.2Panel面板类

面板是能在屏幕上实际显示的组件。面板继承了Container类,它提供容纳其他组件的功能。Applet类是Panel类的一个子类。要在一个Panel中嵌套其他面板,用户只能创建一个新的Panel,并把它加到窗体(如:Frame或Applet)中,就像用户加入其他GUI组件一样,面板无边框,不能单独使用。12.2创建图形界面容器12.2.2Panel面板类

面板的构造方法有:Panel()

建立一个新面板,采用默认的布局管理器Panel(LayoutManager

layout)

建立一个新面板,采用指定的布局管理器从构造方法可以看出,面板没有标题,它由布局管理器进行布局的管理

12.2创建图形界面容器12.2.2Panel面板类举例

importjava.awt.*;classPanelTestextendsPanel{ publicstaticvoidmain(Stringargs[]){

PanelTestp=newPanelTest(); Framef=newFrame("在框架中添加面板示例!");f.add(p);//将面板添加到框架窗体 f.setSize(300,200);

f.setVisible(true);}}

12.3布局图形界面组件一般概念:在缺省情况下,每个容器中都有布局管理器。如果容器的缺省布局管理器不能满足用户的需要,用户可以使用别的布局管理器来代替缺省的。AWT提供了五种布局管理器:FlowLayout、GridLayout、BorderLayout、CardLayout和GridBagLayout。各布局管理器对容器的管理方法不同。12.3布局图形界面组件关于默认布局管理器:如果用户不指定容器所使用的布局管理器,那么容器将使用自己缺省的布局管理器。每当容器需要改变外观时,这些缺省的布局管理器会发挥作用。大多数布局管理器的方法都不需要程序直接调用。AWT提供的布局管理器各有各的长处和缺点。见教材P83表1、表2。12.3布局图形界面组件选择布局管理器的基本原则用户要求尽量使用所有的空间来显示组件,可以考虑使用BorderLayout和GridBagLayout。如果使用BorderLayout,用户应该将占用空间最大的组件放在中心部位。如果使用GridLayout,用户需要为组件设置限制条件。用户需要在紧凑的一行中以组件的自然尺寸显示较少组件时,用户可以考虑用面板容纳组件,并使用面板的缺省布局管理器FlowLayout。用户需要在多行或多列中显示一些同样尺寸的组件,GridLayout最适合此情况。如果有必要的话,可以使用面板来容纳组件。12.3布局图形界面组件12.3.1FlowLayout顺序布局管理器特点:FlowLayout也称为流式布局管理器,其排版方式就像流程或文本处理器在处理一段文字一样,常用于RadioButton或CheckBox等组件的排列,它将组件逐个放置在容器的一行中,一行满后另起一行。12.3布局图形界面组件12.3.1FlowLayout顺序布局管理器的构造方法publicFlowLayout()建立默认布局publicFlowLayout(intalign)设置对齐方法,对齐常量包括FlowLayout.LEFT、FlowLayout.RIGHT、FlowLayout.CENTERpublicFlowLayout(int

align,int

hgap,int

vgap)参数hgap和vgap表示组件的水平间距和垂直间距12.3布局图形界面组件顺序布局管理器举例importjava.awt.*;publicclassTestFlowLayout{publicstaticvoidmain(Stringargs[]){Framef=newFrame("这是一个布局管理器");

f.setLayout(new

FlowLayout());f.add(newButton("第一个按钮"));f.add(newButton("第二个按钮"));f.add(newButton("第三个按钮"));f.add(newButton("第四个按钮"));f.setSize(300,300);

f.setVisible(true);}}12.3布局图形界面组件12.3.2BorderLayout边界布局管理器

BorderLayout将容器分为东、南、西、北、中5个区域,按照上北下南左西右东的格局分布,各用一个方位单词表示东:East南:South西:West北:North中:Center12.3布局图形界面组件12.3.2BorderLayout边界布局管理器以下例题表明Frame的默认布局管理器是BorderLayoutimportjava.awt.*;publicclassTestBorderLayout{publicstaticvoidmain(Stringargs[]){Framef=newFrame("这是一个边界布局管理器");f.add(newButton("第一个按钮"));f.add(newButton("第二个按钮"));f.setSize(300,300);f.setVisible(true);}}12.3布局图形界面组件改进后:importjava.awt.*;publicclassTestBorderLayout{publicstaticvoidmain(String

args[]){Framef=newFrame("这是一个边界布局管理器");

f.setLayout(new

BorderLayout());

f.add("North",newButton("第一个按钮"));

f.add("West",newButton("第二个按钮"));f.setSize(300,300);

f.setVisible(true);}}12.3布局图形界面组件12.3.3GridLayout网格布局管理器GridLayout网格布局管理器用于将容器区域划分为一个矩形网格(区域),其组件按行和列排列,每个组件占一格。12.3布局图形界面组件12.3.3GridLayout的构造方法:GridLayout()//成一个单列的网格布局GridLayout(int

row,int

col)//生成一个设定行数和列数的网格布局GridLayout(int

row,int

col,int

horz,int

vert)//可以设置组件之间的水平和垂直间隔12.3布局图形界面组件网格布局示例:importjava.awt.*;publicclassGridLayoutExample{publicstaticvoidmain(Stringargs[]){Framef=newFrame("网格布局演示!");Stringstr[]={"1","2","3","4","5","6","7","8","9"};

f.setLayout(new

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论