java速成第十章 图形界面(1)组件和窗口.ppt
第十章第十章 图形界面设计图形界面设计【学习目标学习目标】图形界面设计是程序设计语言一个很重要的部分,在Java中,是通过使用jdk中的AWT包中的相关类来完成图形界面设计的,所以通过本章学习,读者应该达到以下目标:掌握图形界面设计原理;熟悉AWT包中各种图形界面类的及其相互关系;掌握AWT版面配置类的使用;了解Java中事件处理机制的原理,并实现相应事件处理功能;10.1 AWT概述概述10.1.1 AWT简介简介10.1.2容器、组件的关系容器、组件的关系10.1.3 AWT容器介绍容器介绍10.1.4AWT组件介绍组件介绍一、一、Java的图形用户界面的图形用户界面 AWT包包 AWT包提供的类大致上可以归纳成包提供的类大致上可以归纳成4大类:大类:图形界面组件图形界面组件,如:窗口、按钮、菜单等。,如:窗口、按钮、菜单等。2D2D图形绘制组件图形绘制组件,如:直线、圆形。,如:直线、圆形。布局对象布局对象:用来安排图形界面组件的位置。:用来安排图形界面组件的位置。事件处理对象事件处理对象,用来处理图形界面组件所触发的,用来处理图形界面组件所触发的事件。事件。AWT包组件包组件Java.lang.ObjectMenuComponentComponentMenuBarMenuItemContainerLabelButtonTextComponentCheckBoxMenuWindowPanelFrameDialogFileDialogTextFieldTextArea屏幕坐标位置屏幕坐标位置 缺省状态下原点的位置为屏幕左上角位置缺省状态下原点的位置为屏幕左上角位置(0,0)。)。x坐标是从左向右移动的水平距离,坐标是从左向右移动的水平距离,y坐坐标是从上向下移动的垂直距离标是从上向下移动的垂直距离 。(0,0)X坐标轴坐标轴Y坐标轴坐标轴建立窗口建立窗口Frame类的操作类的操作 创建窗口的创建窗口的基本和必要操作基本和必要操作包括以下方面:包括以下方面:(1 1)可以设置窗口的大小。)可以设置窗口的大小。(2 2)给窗口一个标题。)给窗口一个标题。(3 3)在屏幕的某个位置放置窗口。)在屏幕的某个位置放置窗口。(4 4)显示窗口。)显示窗口。(5 5)关闭窗口。)关闭窗口。【任务任务10-1】AWT实现登录窗口雏形。实现登录窗口雏形。importimport java.awt.*;publicpublic classclass TestFrame1 extendsextends Frame TestFrame1(String title)supersuper(title);setBounds(100,100,300,200);setVisible(truetrue);publicpublic staticstatic voidvoid main(String args)TestFrame1 newWindow=newnew TestFrame1(系统登录);newWindow.show();任何一个窗口都必须为Frame子类或dialog类的子类四个数字分别代表窗口左上角的横坐标、纵坐标、窗口的宽和高组件组件一般步骤一个组件在图形界面中需要添加到容器中才能看到,通过Component类对象的方法add()将一个组件添加到容器中。创建创建 new加入加入 add响应响应 action处理处理Component组件类的常用方法组件类的常用方法setBounds(intx,inty,intwidth,intheight)-调整组件的位置和大小setBackground(Colorc)-设置背景色setForeground(Colorc)-设置前景色setVisible(booleanb)-显示或隐藏组件setFont(Font f)-设置字体包含包含组件组件的的组组件件-容器容器列表列表按钮按钮菜单菜单container另一个窗口另一个窗口窗口,对话框窗口,对话框container包含包含组件组件的的组组件件-容器容器AWT使用Container类来定义最基本的组件容器,它有两个子类:Window类和Panel类。在Window类还有两个子类:(1)定义对话框,用Dialog子类;FileDialog-文件对话框(2)定义框架,用Frame类。常用方法:voidsetLayout(LayoutManagermgr)ObjectAWTEventComponentTextComponetButtonCanvasCheckBoxChoiceLabelListContainerTextAreaTextFieldPanelWindowScrollPaneAppletFrameDialogFileDialogScrollbarMenucomponentMenuBarMenuItemMenuCheckboxMenuItemJComponet10.1.2容器、组件的关系容器、组件的关系Frame类的方法类的方法Frame类的构造方法类的构造方法 主要功能主要功能 Frame()创建没有标题的窗口创建没有标题的窗口 Frame(String title)创建以创建以title为标题的窗口为标题的窗口 Frame类的方法类的方法 主要功能主要功能 int getState()获得获得Frame窗口的状态(窗口的状态(Frame.Normal表示一般状态,表示一般状态,Frame.ICONIFIED表示最小化状态)表示最小化状态)void setState(int state)设置设置Frame窗口的状态(窗口的状态(Frame.Normal表示一般状态,表示一般状态,Frame.ICONIFIED表示最小化状态)表示最小化状态)String getTitle()获得获得Frame窗口的标题窗口的标题 void setTitle(String title)设置设置Frame窗口的标题窗口的标题 boolean isResizable()测试测试Frame窗口是否可以改变大小窗口是否可以改变大小 void setResizable(boolean r)设置设置Frame窗口是否可以改变大小窗口是否可以改变大小 Image getIconImage()返回窗口的最小化图标返回窗口的最小化图标 void setIconImage(Image img)设置窗口的最小化图标为设置窗口的最小化图标为img 标签组件标签组件标签是用来在窗口中显示文字的组件。标签是用来在窗口中显示文字的组件。它是由它是由java.awt类库中的类库中的Label类来创建。类来创建。通过通过getText()方法获得标签所显示的文字;通方法获得标签所显示的文字;通过过setText()方法可以改变标签内的文字。方法可以改变标签内的文字。Label类的方法类的方法Label类的构造方法类的构造方法 主要功能主要功能 Label()创建一个没有文字的标签创建一个没有文字的标签 Label(String str)创建一个以创建一个以str为文字的标签为文字的标签 Label(String str,int align)创建一个以创建一个以str为文字的标签,并以为文字的标签,并以align为对齐方式,为对齐方式,其中其中Label.LEFT、Label.CENTER、Label.RIGHT分别为居左、居中和居右分别为居左、居中和居右 Label类的方法类的方法 主要功能主要功能 int getAlignment()返回标签内文字的对齐方式返回标签内文字的对齐方式(0代表代表Lable.LEFT,1代代表表Label.CENTER,2代表代表Label.RIGHT)void setAlignment(int align)设置标签内文字的对齐方式设置标签内文字的对齐方式 String getText()获得标签内的文字获得标签内的文字 void setText(String text)设置标签内的文字设置标签内的文字 按钮组件按钮组件 按钮提供用户快速启动某一动作的方法。通常用户在使用鼠标或键盘按下按钮时,计算机会产生一系列的动作,完成一定的操作。Button类的方法类的方法Button类的构造方法主要功能Button()创建一个没有标题的按钮Button(Stringstr)创建一个以str为标题的按钮Button类的方法主要功能StringgetLabel()获得按钮的标题VoidsetLabel(Stringstr)设置按钮的标题为str 文本框文本框 文本框是用来在窗口中显示文字的矩形框,这些文字可以被用户编辑。文本框可以用来输入文字、编辑文字、并显示这些的文字内容。TextField类的方法类的方法TextField类的构造方法类的构造方法 主要功能主要功能 TextField()创建一个空的文本框创建一个空的文本框 TextField(int columns)创建一个空的文本框,具有指定列数创建一个空的文本框,具有指定列数 TextField(String text)创建一个包含有指定创建一个包含有指定“text”内容文本框内容文本框 TextField(String text,int culumns)创建一个包含有指定列数和创建一个包含有指定列数和“text”内容的文本框内容的文本框 TextField类的方法类的方法 主要功能主要功能 String getText()获得文本框的内容获得文本框的内容 int getColumns()获得文本框的列数获得文本框的列数 void setText(String text)设置文本框的内容为设置文本框的内容为text void setColumns(int columns)设置文本框的列数设置文本框的列数 10.1.4AWT组件介绍组件介绍【任务任务10-2】AWT实现登录窗口添加组件实现登录窗口添加组件importimport java.awt.*;publicpublic classclass LoginUseAWT extendsextends Frame LoginUseAWT(String title)supersuper(title);setBounds(500,300,280,150);setLayout(newnew FlowLayout();Label lab1=newnew Label(username);add(lab1);setVisible(truetrue);publicpublic staticstatic voidvoid main(String args)newnew LoginUseAWT(系统登录);上机作业A用流布局管理器(FlowLayout)实现以下布局的窗口提示:根据例题11-6修改增加两个Label控件注意添加次序:先添加到窗口中的就排在左边,按照组件添加的次序从左到右、从上到下排列自己定义的类不要取名为java中已有的类如FlowLayout,GridLayout等上机作业B用网格布局管理器(GridLayout)实现以下布局的窗口提示:生成Label控件的时候,可以用构造方法:Label(Stringtext,intalignment)构造一个显示指定的文本字符串的新标签,其文本对齐方式为指定的方式。Labellab1=newLabel(“学号”,Label.RIGHT);10.5实训实训实训实训1:【实训目的】练习版面配置【实训步骤】用FlowLayout布局管理器实现如图10-11所示界面:图10-11布局管理器练习 上机作业39周课完作业3上机提示复选框(Checkbox)单选框(RadioButton)复选框和单选框组件都提供简单的“on/off”开关,不同的地方在于一组复选之间没有特定的约束关系,但如果多个复选框属于一个复选框组,这些复选框之间是相互关联的,同一时刻只能有一个复选框处于选中状态,这种情况下生成的复选框对象又被称为单选框。复选框对象的生成方法如下:checkboxchbobj=newcheckbox(one、null、true);在上面的语句中,第一个参数是复选框的文本标签;第二个参数为复选框的组名,当组名为空时,表示生成的对象是复选框,如果组名不为空,表示生成的对象是单选框;第三个参数代表复选框对象的状态,ture表示生成的复选框对象为选中状态,false表示非选中状态。对于单选框对象的生成方法如下:CheckboxGroupcbgobj=newCheckboxGroup();Checkboxc1=newCheckbox(one,cbgobj,true);Checkboxc2=newCheckbox(two,cbgobj,false);对于单选框对象的生成,需要首先生成一个复选框组CheckboxGroup的对象,然后生成Checkbox对象,并将生成的Checkbox对象加入到复选框组中。在上面的语句中,第一个语句生成复选框组对象,第二个和第三个语句生成复选框对象,值得注意的是,通过将第二个参数指定生成的CheckboxGroup对象,就把复选框对象加入到复选框组中,从而也就生成了单选框对象,语句中第一个和第三个参数的含义同上面复选框对象。下拉式菜单(Choice)下拉式菜单适用于有大量选项同时又需要节省窗口面积的情况,每次只能选择下拉式菜单中的一项。下拉式菜单对象的生成方式如下:choicechoiObj=newChoice();choiObj.add(class1);choiObj.add(class2);choiObj.add(class3);上面的语句生成了包含有class1、class2和class3的下拉式菜单。作业3上机提示列数(List)列表用于将多个文本选项显示在一个区域中,用户可以同时查看若干个选项。List lObj=new List(2,false);Lobj.add(Sun);Lobj.add(Moon);在上面的第一个语句中,第一个参数是显示行数,第二个参数表示是否允许多选。第二个和第三个语句用于想在List中添加选项。滚动窗口(ScrollPane)滚动窗口是一种容器,不能单独使用,可以将其他组件添加到滚动窗口中。Scrollpane spObj=new Scrollpane();SpObj.add(pObj);菜单(Menu)菜单和其他组件不同,不能直接添加到容器中某一位置,可以添加到菜单条或其他菜单中。菜单条(MenuBar)是一种水平菜单,只能添加到Frame对象中,作为菜单树的根基。有关Frame对象方面的信息,将在8.3节中介绍。下面是菜单条对象生成和添加到Frame对象中的示例语句:Frame frObj=new Frame(Frame title);MenuBar mbObj=new Mew MenuBar();FrObj.setMenuBar(mbObj);在Java中,类Mune提供了标准的下拉菜单,生成的菜单对象可以被添加到菜单条和其他菜单中。如下面语句所示:Frame frObj=new Frame(Frame title);MenuBar mbObj=new MenuBar();FrObj.setMenuBar(mbObj):Menu mObj1=new Menu(File);Menu mObj2=new Menu(Edit);mbObj.add(mobj1);mbObj.add(mobj2);一个菜单通常包含多个菜单项,菜单项对象生成后,通常需要添加到相应的菜单中,如下面的语句所示:Memu mobj=new Menu(File);MenuItem miobj1=new MenuItem(Open);MenuItem miobj2=new MenuItem(Save);mobj.add(miobj1);mobj.add(miobj2);