图形用户界面设计(2011级).ppt

上传人:tia****nde 文档编号:12725877 上传时间:2020-05-19 格式:PPT 页数:49 大小:1.99MB
返回 下载 相关 举报
图形用户界面设计(2011级).ppt_第1页
第1页 / 共49页
图形用户界面设计(2011级).ppt_第2页
第2页 / 共49页
图形用户界面设计(2011级).ppt_第3页
第3页 / 共49页
点击查看更多>>
资源描述
,4,图形用户界面设计,第,章,图形用户界面及组件,“搭积木”式的图形用户界面构建方法,标签组件,文本框组件,下拉列表组件,列表框组件,按钮组件,AWT简介,AWT(AbstractWindowToolkit)抽象窗口工具包是API为Java程序提供的建立图形用户界面GUI(GraphicsUserInterface)工具集。AWT是窗口框架,它从不同的窗口平台的窗口系统中抽取共同组件,当程序运行时,将这些组件的创建和动作委托给程序所在的运行平台。优点:AWT提供用于创建生动而高效的GUI的各种组件。GUI以通过键盘或鼠标来响应用户的操作。缺点:不能使用特定操作系统上复杂组件,最多只能使用4种字体。现在看来界面丑陋,功能有限。,AWT简介,所有和AWT编程有关的类都放在java.awt包及其子包中。AWT包中提供了两个基类来表示图形界面元素:Component和MenuComponent。,AWT简介,AWT主要由以下三个部分组成;组件(Component):定义了所有的图形化界面元素及绘制方法,其中大多数组件是从抽象类Component派生而来。容器(Containers):容器类用于包含组件,也可以包含容器以便统一操作和管理。在容器中可以设定它所包含组件的布局方式组件必须被包含到容器中布局管理器(Layouts):用于规定用户接口的所有组件在屏幕上如何布置和怎样使界面作到与平台无关。,AWT简介,AWT构建图形用户界面的机制包括:提供了一些容器组件(如Frame和Panel),用来容纳其他的组件(如按钮Button、复选框Checkbox和文本框TextField)。用布局管理器来管理组件在容器上的布局。利用监听器来响应各种事件,实现用户与程序的交互。提供一套绘图机制,来自动维护或刷新图形界面。,组件(Component),Component组件及其子类,常用组件-1,按钮(Button)publicButton()publicButton(Stringlabel)如:Buttonb1=newButton();Buttonokb=newButton(“OK”);标签(Label)PublicLabel()PublicLabel(Stringtext)PublicLabel(Stringtext,intalignmnet)如:LabelnameLabel=newLabel(“姓名”);LabelsexLabel=newLabel(“性别”,Label.CENTER);,常用组件-2,单行文本输入区(TextField)publicTextField()创建一个空字符的输入框publicTextField(Stringtext)用指定的字符串创建一个输入框publicTextField(intcolu)创建一个空的输入框,规定字符长度类似不超过col指定的数字publicTextField(Stringtext,intcolumns)用指定的字符串创建一个输入框,规定字符长度类似不超过col指定的数字。例如:TextFieldt1=newTextField(“name”,10);TextFieldt2=newTextField(“sex”);,例子登录页面-1,容器-Frame-1,Frame是Window的一个子类,是带有标题和缩放角的窗口。1、Frame可以设置自己的标题、边框、菜单、大小等等。2、默认的Frame实例化对象都是没有大小和不可见的,必须调用setSize()来设置大小,调用setVisible(true)来设置该窗口为可见的。Frame的构造函数:publicFrame()publicFrame(Stringtitle),容器-Frame列子,容器-Panel,Panel:面板是一个简单的容器类,用于容纳其他的组件或是面板。它有自己的布局管理器。Panel必须放在Window或其子类才能显示出来。构造函数:PublicPanel()PublicPanel(LayoutManagerlg),容器-Panel例子,布局管理器,布局管理器主要包括:流程布局FlowLayout边框布局BorderLayout网格布局GridLayout卡布局CardLayout网格包布局GridBagLayout,流程布局FlowLayout-1,1、FlowLayout是Panel和Applet的缺省布局管理器。2、组件的放置规律是从左到右、从上到下进行放置。3、容器大小改变时,组件大小不变,相对位置会发生变化。构造函数:FlowLayout();FlowLayout(intalign);FlowLayout(intalign,inthgap,intvgap);参数说明:缺省的对齐方式居中对齐默认的组件横纵间隔都是5个像素align:对齐方式FlowLayout.LEFT,FlowLayout.RIGHT,FlowLayout.CENTERhgap:水平间隔vgap:垂直间隔,流程布局FlowLayout-2,网格布局GridLayout-1,1、容器中组件呈网格状布局,平均占据容器的空间。2、容器中各个组件同高同宽。3、容器大小改变时,组件位置不变,大小改变。GridLayout构造函数:publicGridLayout()publicGridLayout(introws,intcols)publicGridLayout(introws,intcols,inthgap,intvgap)参数说明:默认情况下,每行一个组件。即只有一列。rows指定行数,cols指定列数。hgap:水平间隔,单位像素。vgap:垂直间隔,单位像素,网格布局GridLayout-2,边框布局BorderLayout-1,1、BorderLayout是Window,Frame和Dialog的缺省布局管理器。2、BorderLayout把容器分成5个区域:North,South,East,West和Center,每个区域只能放置一个组件。3、容器大小变化时,组件相对位置不变,大小发生变化4、如果四周没有组件,则由中间的组件来填充;如果中间没有组件,则空着。构造函数:publicBorderLayout()publicBorderLayout(inthgap,intvgap)参数说明:Hgap:水平间隔,单位像素Vgap:垂直间隔,单位像素如果不制定间隔宽度,则组件间是彼此相邻的。,边框布局BorderLayout-2,北,南,东,西,边框布局BorderLayout-3,卡布局CardLayout-1,1、容器分成许多层,每个组件都是重叠的。2、每个组件占据整个容器的大小。3、每层只允许放置一个组件。4、一次只显示一个组件。cardLayout构造函数:publicCardLayout()publicCardLayout(inthgap,intvgap)参数说明1、默认是无间隔的。2、hgap水平间隔,表示组件左右两边和容器的间隔,以像素为单位。3、vgap垂直间隔,表示组件上下两边和容器的间隔,以像素为单位。,卡布局CardLayout-2,总结,1、AWT简介组件/容器/布局管理器2、容器组件FramePanel3、布局管理器FlowLayout/GridLayout/BorderLayout4、常用组件Button/Label/TextField/List/Choice,事件处理机制,事件授权处理机制:对组件注册事件监听,当有某个动作触发了这个该事件后,Java运行时系统将调用对应的方法响应该操作。事件处理过程中涉及到三类对象:1、Event-事件。每个事件都对应java中的一个类。例如键盘操作对应的事件类是KeyEvent。2、EventSource-事件源。事件发生的场所,通常就是各个组件,例如按钮Button。3、Eventhandler-事件处理者。接收事件对象并对其进行处理的对象。,使用授权处理模型进行事件处理的一般方法归纳如下:1、对于某种类型的事件XXXEvent,定义相应的事件监听器类,该类需要实现与该事件相对应的接口XXXListener;2、事件源实例化以后,必须进行授权,注册该类事件的监听器,使用addXXXListener(XXXListener)方法来注册监听器。,事件处理机制,事件处理机制,事件类AWTEvent1,1、与AWT有关的事件都是java.awt.AWTEvent类派生的。2、AWT事件分为两大类:低级事件:基于组件和容器的事件。如:鼠标的进入,点击,拖放等,或组件的窗口开关等。高级事件:基于语义的事件,它不和特定的动作相关联,而依赖于触发此事件的类。如:TextField中按Enter键会触发ActionEvent事件。滑动滚动条会触发AdjustmentEvent事件。选中项目列表的某一条就会触发ItemEvent事件。,低级事件ComponentEvent(组件事件:组件尺寸的变化,移动)ContainerEvent(容器事件:组件增加,移动)WindowEvent(窗口事件:关闭窗口,图标化)FocusEvent(焦点事件:焦点的获得和丢失)KeyEvent(键盘事件:键按下、释放)MouseEvent(鼠标事件:鼠标单击,移动)高级事件(语义事件)ActionEvent(动作事件:按钮按下)AdjustmentEvent(调节事件:调节滚动条上数值)ItemEvent(项目事件:修改下拉列表中的选项)TextEvent(文本事件:文本对象改变),事件类AWTEvent2,监听器是接口,根据事件类中定义的动作来定义方法。AWT中每个事件类都有对应的事件监听器。例如:ActionEvent对应于ActionListener,MouseEvent对应于MouseListener。事件监听器的使用:1、注册事件监听。2、在对应的事件监听方法中实现处理操作。,事件监听器-4-1,ActionEvent相对应的接口ActionListener:publicinterfaceActionListenerextendsEventListenerpublicvoidactionPerformed(ActionEvente);当事件源是命令按钮时,该事件表示按下按钮。当事件源是文本框时,该事件表示按下Enter键。比如如何让命令按钮监听动作事件,并做出处理:1.让按钮的容器类实现该监听器接口;/implementsActionListener2.对按钮注册该监听器;/button.addActionListener3.实现该事件的处理方法。/publicvoidactionPerformed(ActionEvente),事件监听器-4-2,MouseEvent对应的接口MouseListenerpublicinterfaceMouseListenerextendsEventListenerpublicvoidmouseClicked(MouseEvente);/鼠标按键在组件上单击(按下并释放)时调用publicvoidmousePressed(MouseEvente);publicvoidmouseReleased(MouseEvente);publicvoidmouseEntered(MouseEvente);/鼠标进入到组件上时调用publicvoidmouseExited(MouseEvente);/鼠标离开组件时调用KeyEvent相对应的接口KeyListener:publicinterfaceKeyListenerextendsEventListenerpublicvoidkeyPressed(KeyEventev);publicvoidkeyReleased(KeyEventev);publicvoidkeyTyped(KeyEventev);,事件监听器-4-3,AWT的组件类中提供注册和注销监听器的方法:注册监听器:publicvoidadd(listener);如:button.addMouseListener(this);注销监听器:publicvoidremove(listener);如:button.removeMouseListener(this);,事件监听器-4-4,事件处理的软件实现,一、用容器类实现监听接口由于Java支持一个类实现多个接口。因此容器类可以实现多个监听接口,容器中的组件将容器实例本身注册为监听器。示例:FrameCounter.java,事件处理的软件实现,二、用内部类实现监听接口用内部类实现监听接口的好处是可以直接访问外部类的成员变量和方法。示例:ButtonCounter.java,事件处理的软件实现,三、定义专门的顶层类实现监听接口优点是可以使处理事件的代码与创建GUI界面的代码分离,缺点是监听类中无法直接访问组件。在监听类的事件方法中不能直接访问事件源,而必须通过事件类的getSource()方法来获得事件源。示例:OuterCounter.java,事件处理的软件实现,四、采用事件适配器如果实现一个监听接口,必须实现接口中所有的方法,否则这个类必须声明为抽象类。而在实际应用中往往不需要实现中所有的方法。为了编程方便AWT为部分方法比较多的监听接口提供了适配器类。在程序中可以定义一个继承适配器的类来作为监听器,在这个类中只需要根据实际的需要来实现个别事件处理方法。示例:AdapterCounter.java,事件适配器Adapter4-1,1、适配器(adapter)是实现XXXListener接口的抽象类。2、通过adapter类来实现监听可以缩短程序代码,直接通过继承/内部类来实现处理方法。3、但当需要多种监听器或该类已经有父类的时候,就不能通过适配器来实现事件监听。,java.awt.event包中定义的事件适配器类:1ComponentAdapter(组件适配器)2ContainerAdapter(容器适配器)3FocusAdapter(焦点适配器)4KeyAdapter(键盘适配器)5MouseAdapter(鼠标适配器)6MouseMotionAdapter(鼠标运动适配器)7WindowAdapter(窗口适配器),事件适配器Adapter4-2,1、在一个类中可以实现多个监听接口。2、可以由同一个对象监听一个事件源上发生的多种事件。3、事件处理者和事件源处在同一个类中。4、可以通过事件对象获得详细资料。,事件监听器总结,Applet小程序,Applet称为JAVA小应用程序。这种Applet程序的“.class”文件可以被嵌入到Web网页中,当支持JAVA的浏览器下载含有JAVA小应用程序的网页时,就可以解析执行其中的Applet程序。与一般的JAVA应用程序不同,Applet不是通过main()方法来运行的。在运行时Applet通常会与用户进行互动,显示动态的画面,并且还会遵循严格的安全检查,阻止潜在的不安全因素(例如根据安全策略,限制Applet对客户端文件系统的访问)。,Applet的语言特点,类的定义如:publicclassAppletAppextendsAppletApplet在浏览器中通过标记嵌入在HTML文件中。如:标记的作用是在网页上加载Applet小程序,标记的code属性指明网页上加载的Applet的类文件名称,width和height属性分别决定了Applet小程序的宽度和高度。,Applet的生命周期,Applet的生命周期的四个方法:,init()start()stop()destroy(),Applet方法介绍-1,init()方法,创建Applet时执行,只执行一次当一个新的小程序被浏览器加载,第一个被执行的方法就是init()方法,目的就是对Applet实例对象进行初始化设置。初始化工作可能包含创建Applet所需要的对象、设置初始状态、加载图像或者文字、设置参数等等。star()方法多次执行,当浏览器打开该主页,或者是返回该主页时执行。系统在调用完init()方法之后,将自动调用start()方法。如果前面停止了Applet,也可能会出现重新启动。比如页面被重新访问后,调用该方法再次启动对页面进行处理。,Applet方法介绍-2,paint()方法,在每一次你的小应用程序的输出必须重画窗口,paint()方法都被调用。这种情形的产生有几个原因。例如,小应用程序正在运行的窗口被其他窗口覆盖,之后再恢复。或小应用程序的窗口被缩小再复原。不管什么原因只要小应用程序窗口必须重画窗口paint()方法都就被调用。paint()方法只有一个Graphics类型的参数。,Applet方法介绍-2,stop()方法多次执行,在离开主页时执行,主要功能是停止一些耗用系统资源的工作。停止和启动是成对出现的。浏览器从当前页面跳转到其他页面时,将会调用stop()方法。该方法通常用于停止当前页面的活动线程,以便节省系统资源。也可自己以通过调用该方法使Applet自己来停止。destroy()方法用来释放资源,在stop()之后执行。正常结束浏览器进程时调用destroy()方法,可以使得Applet从内存中释放。我们可以使用destroy()方法来终止任何正在运行的线程,或者释放任何其他正在运行的对象。一般情况下,很少使用destroy()方法,除非有特定的资源需要释放。,Applet的事件,Applet中的事件和Frame中的事件实现起来是类似的。Applet的GUI界面,即在Applet中可以使用JAVA语言中全部AWT组件和工具,包括事件和监听器等,来构造一个完整的界面。Applet类在类库中被定义为Panel类的子类,是一个面板容器,所以Applet默认的布局管理器为FlowLayout。理解这一点我们就很容易为Applet添加事件处理了。,作业,参考课后习题8,实现一个简易计算器的程序编写,要求能完成加减乘除四则运算,并且有必要的容错处理。以后每次只需要提交作业的电子版,以班为单位收集起来统一放到一个文件夹下面,每个同学写明自己的学号和姓名,然后以电子邮件的方式发送到seandtx每次课布置的作业,在下周上课前提交。,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!