




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十二章 AWT图形用户界面,主要内容:,AWT基本元素 组件在容器中的定位 AWT事件模型 图形图像处理,AWT基本元素,【例12.1】、 【例12.2】、 【例12.3】 。,【例12.4】,Button、Label、Textfield、TextArea、Checkbox、Choice、List、Scrollbar。,menu和CheckboxMenuItem是menuItem的子类,而menu的一个重要方 法是public MenuItem add(MenuItem mi),这样的表示方法意味着这样一 个事实:那就是menu可以加入的内容有MenuItem、CheckboxMenuItem 以及menu类自身的对象,因为CheckboxMenuItem及menu作为MenuItem 的子类,都可以被MenuItem的声明来引用,都符合add(MenuItem mi)中的 参数条件。,组件在容器中的定位,坐标方式定位,setLayout(null) 。,对于各容器组件来说,其坐标系原点是容器左上角。 当容器位置变化时,嵌入容器的组件在容器中的相对位置并不变化。,AWT布局管理器定位,布局管理器负责管理组件在容器中的显示属性,例如排列顺序, 组件的大小、位置,当窗口移动或调整大小后,组件如何变化等。 不同的布局管理器使用不同算法和策略,容器可以通过选择不同 的布局管理器来决定布局。,布局管理器类型主要有:FlowLayout,BorderLayout,GridLayout, CardLayout,GridBagLayout。,【例12.5】 FlowLayout,BorderLayout,【例12.9】 GridLayOut,CardLayout,GridBagLayout,【例12.10】card成为frm的布局管理器后,当让哪个层 显示时,调用card的show方法,完成指定层的显示。,【例12.11】,gbc.insets=new Insets(5,6,7,8);,布局管理器的取消,容器定位组件的默认方式采用布局管理器,容器可以根据需要取消布局管理器,方法是调用容器方法setLayout(null)。此后,组件在容器中的位置将采用坐标方式进行定位,例如通过setBounds(int,int,int,int)来确定组件坐标位置及宽度和高度。,AWT事件模型,层次模型,委托模型,【例12.12】通过委托模型让按钮响应事件,委托模型的优点,1、多个监听者可以对同一个事件源对象中的同一事件进行处理。,2、一个事件源中的多个事件可以分别被不同的监听者进行处理。,3、一个监听者可以注册到多个事件源中,对同类事件进行处理。,委托模型的构成,1、将所有事件都封装在包java.awt.event当中,与AWT有关的所有事件类都由java.awt.AWTEvent类派生(它的父类是EventObject)。根据事件类型的不同,分为低级事件和高级事件。如表12.1。,2、采用接口对事件处理内容进行细化,并作为事件源和事件处理者之间联系的桥梁。 如表12.2和表12.3。,3、AWT中常用组件可能引起的事件类型 。如表12.4。,一些低级和高级事件类型,AWT中常用事件与监听者之间的对应关系,事件接口具体方法1,事件接口具体方法2,AWT中常用组件可能引起的事件类型,监听接口实现的四种方式,1、在实现者当中给出接口每个方法的实现 。如【例12.13】。,程序说明 TestFrame对象是事件源,同时又是监听者,所以TestFrame必须对 WindowListener接口给出全部实现,并且将其自身加入到监听者之中。 调用addWindowListener时,不能传入Frame对象,因为它不是 WindowListener的监听者。,2、采用接口形式产生匿名对象给出实现,如例【12.14】 。,监听接口实现的四种方式,3、采用事件适配器,事件适配器就是针对特定的监听接口给出的默认实现 ,如例【12.15】 。,程序说明 WindowAdapter是个类,它对WindowListener中定义的接口方法给出 了默认的实现。它的作用在于:MyWindowListener继承了WindowAdapter, 只对感兴趣的windowClosing方法给出实现,省略了其他不感兴趣方法的编 写,简化了程序的编写。,监听接口实现的四种方式,4、采用适配器形式产生匿名对象给出实现 ,如例【12.16】 。,事件对象,利用事件对象提供的方法得到事件源对象的信息 。如【例12.17】。,程序说明 当点击四个按钮中的任何一个时,将发生ActionEvent事件,然而 它们的处理方法只有一个actionPerformed,即多个事件源,在一个 方法中处理。如何区分是哪个事件源即按钮产生的动作呢?关键是 依靠ActionEvent,它的对象e有方法getSource,能返回事件源对象 的引用,从而能判断是哪个按钮被按下。当然,也可以通过 getActionCommand方法得到事件源对象的标签,通过标签来判断 哪个按钮对象被按下。其他事件对象,例如MouseEvent能返回鼠 标的当前坐标信息,KeyEvent能判断哪个键被按下,等等。,事件触发原理,默认情况下,组件屏蔽了对所有事件的响应。只有在一个组件上注册某种事件的监听器后,组件才可以对这种事件作出响应。系统会调用processEvent方法来决定调用什么样的processXxxEvent方法(Xxx代表某种事件类型,如Focus、Key、Mouse等),如果没有注册相应监听者,仍然要进行事件响应,就需要调用enableEvent方法使这一事件类型使能,之后覆盖processXxxEvent方法。如【例12.18】。,AWT 图形图像处理,概述,paint方法、Canvas和Graphics 对象,组件重绘,paint(Graphics g),Graphics对象,对象引用的获得。,Graphics对象的文字绘制、图形绘制、图像绘制方法及相关注意事项 。,在paint方法当中,由其参数得到该对象的引用。 调用Component的getGraphics方法得到该组件对象的Graphics引用,Graphics对象,绘制区域的设置:setClip方法与clipRect方法,相对坐标的使用:translate方法,Graphics2D:是Graphics的一个子类,用来绘制2D图形物件,能对形状、文本和图像的展示提供更加完善的控制。,双缓存技术,在Component及其子类的paint方法中,进行图形图像绘制时,如果绘制 内容复杂且频繁时,往往比较费时,常常出现绘制界面的抖动,为了解 决这个问题,可以先将绘制的内容保留在一个Image对象当中,如果需 要重新显示绘制的内容,例如界面最小化后重新浮现,仅仅简单的将这 个Image内容再现就行了,这个技术就是双缓存技术。,例【12.21】程序说明 1)img起到缓存的作用,og在其上进行图形绘制。 2)createImage必须在MyCanvas显示后才能调用,所以mc.init()一句要放在f.setVisible(true)之后。 3)当窗口缩小、移动等情况发生后,只对img进行绘制,不再进行每个细节的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年福建事业单位考试网络教育的优势与不足分析试题及答案
- 确保2024年园艺师考试的学习效果试题及答案
- 突破难关福建事业单位考试试题及答案
- 福建事业单位考试答题时间管理试题及答案
- 燃气炉考试题及答案
- 巩固知识2024年福建事业单位考试试题及答案
- 福建事业单位考试信息素养试题及答案
- 农业职业经理人考试常见题型与解答技巧分析试题及答案
- 紧跟步伐2024年福建事业单位考试试题及答案
- 基于成果导向2024年园艺师考试的创新思维试题及答案
- 玉盘二部合唱正谱
- 华东医药股份有限公司放射性核素暂存库建设项目报告表
- 2025年官方策划标准离婚协议书(民政局版)
- 放射防护知识培训课件
- 2025年度离婚协议书有子女抚养权及财产分割协议
- 2023年普通高等学校招生全国统一考试全国乙英语试题含答案
- 《临床急救》课件
- 2024年洛阳科技职业学院单招职业技能测试题库标准卷
- 安保服务智慧安防平台构建及管理策略实施计划
- 江铜集团招聘笔试冲刺题2025
- 道德经与职业生涯管理知到智慧树章节测试课后答案2024年秋上海应用技术大学
评论
0/150
提交评论