JavaAWT编程总结-.pdf
1.什么是 GUI?a)GUI 是 Graphics User Interface 的全称,意思是图形用户界面.2.为什么需要GUI?a)图形用户界面能够让最终用户通过鼠标拖动、单击等动作就可以操作整个应用,从而提高应用的用户体验效果,使程序受到用户的欢迎.3.Java通过 AWT 和 SWING来完成 GUI 图形用户界面编程.4.AWT a)AWT 是SUN 公 司提供的一个基本的 GUI 类库,被称为 抽象工具集(Abstract Window-Toolkit),它为 Java 应用程序提供了基本的组件.b)AWT组件需要调用运行平台的图形界面来创建和平台一致的对等体,所以 AWT 只能使用所有平台都支持的公共组件,因此 AWT只能够提供一些常用的 GUI 组件.5.AWT 的主要组成部分a)Component,代表一个具体图形表示能力的对象,可以在屏幕上显示,并与用户交互.通常我们把它称为”组件”.b)MenuComponent,代表图形界面的菜单.i.MenuBar,代表菜单条.ii.Menu,代表一个菜单项的集合.iii.MenuItem,代表一个菜单项.c)Container,代表一个AWT 组件容器,可以盛装其他Commponent组件,它继承自Component 抽象类,本身也代表一个Component 组件.i.Window,可独立存在的顶级窗口.1.Frame,代表一个窗体.2.Dialog,代表一个对话框a)FileDialog 代表一个文件对话框,用于打开或保存文件.ii.Panel,可容纳其他组件,但不能独立存在,必须被添加到其他容器中.iii.ScrollPane,带滚动条的容器.d)LayoutManager,布局管理器,表示容器管理其他组件的方式.i.FlowLayout,流式布局,类似于 Window 平台记事本的文本布局方式.ii.BorderLayout,边框布局,只能盛装5 个组件,这 5 个组件分别位于边框布局容器的东西南北中五个方位.iii.GridLayout,网格布局,将组件以网格形式显示在容器中.iv.GridBagLayout,网 格 包 布 局,一 种 较 为 复 杂 的 布 局 管 理 器,依 赖GridBagConstraints 来约束组件.v.CardLayout,卡片布局,以时间来管理容器内的组件,将组件看作是一张张卡片,每次显示最外面一张卡片(组件).vi.BoxLayou,箱式布局,通常与 Box 容器结合使用.6.AWT 的事件a)应用程序响应用户的某个动作或请求,如用户单击了一下鼠标,用户请求关闭应用程序窗口等.b)AWT 编程中,所有事件的处理都必须交给特定的对象来完成,我们将这个特定的对象称为事件监听器.c)AWT 的事件处理机制是一种委派式的事件处理方式,通过将某个事件监听器注册到用户指定的组件,当用户进行某个操作并触发指定事件时,应用程序会自动产生一个事件(Event)对象并作为参数传给事件监听器中的事件处理器,然后由事件监听器通知事件处理器来响应用户,完成用户的请求.d)不同的事件需要不同的事件监听器,不同的监听器需要实现不同的监听器接口.e)事件监听器接口:为某个特定事件定义了响应用户请求的方法,当用户将某个事件监听器注册到指定组件上以响应特定的事件时,则该事件监听器必须实现对应的事件监听器接口才能对用户的请求进行有效处理.例如,用户点击了鼠标右键,希望打开某个应用程序的右键菜单,则注册到该应用程序上的事件监听器必须实现鼠标事件监听器接口,并实现该接口内部某些方法来完成用户的请求.f)事件适配器,很多时候,我们只需要实现某个事件监听器接口中个别方法就能完成应用程序的实际需求,但实现该事件监听器接口的类必须实现该接口中所有的抽象方法,这会造成代码的冗余.而事件适配器可以帮我们解决这个问题,事件适配器实现了所有的拥有多个抽象方法的事件监听器接口,并空实现了这些接口中所有的抽象方法,所谓空实现,就是方法中没有任何实现代码,因此,我们可以通过继承对应事件监听器接口的事件适配器抽象类,并实现我们感兴趣的方法来完成应用需求即可.g)Java事件处理过程中主要涉及的三类对象i.事件源,通常为普通组件.ii.事件,通常指用户的某个操作,如单击了一下鼠标,按了一下回车键.iii.事件监听器,负责监听事件源上所发生的事件,并作出响应.h)AWT事件监听器的实现形式i.内部类形式ii.顶级类形式iii.类本身作为事件监听器iv.匿名内部类形式v.注:目前最为流行的事件监听器的实现形式是内部类形式和匿名内部类形式.7.AWT 绘图a)AWT绘图的实现过程.i.重写画布类的paint 方法,绘图图形.ii.注册事件监听器到指定的组件.iii.调用 Component 类的 repaint 方法绘制图形.b)AWT实现绘图主要涉及的对象i.Component 类的子类Canvas类,它代表一个画布.ii.Graphics,代表一个画笔,可以在 Canvas的子类中绘制用户自订的图形.c)Image 类代表了位图,它的一个主要的实现类BufferedImage 是可以访问图形数据缓冲区,并可以返回一个Graphics对象来绘制该BuuferedImage.d)可以使用ImageIO 工具类的ImageReader和 ImageWriter 读写磁盘上的位图文件.8.AWT 的优缺点a)AWT在许多非桌面环境,如嵌入式设备中有着自己的优势,它的主要优点如下:i.更少的内存:对运行在有限环境中的GUI 程序的开发,是合适的。ii.2.更少的启动事件:由于AWT 组件是本地由操作系统实现的。绝大多数的二进制代码已经在如系统启动的时候被预装载了,这降低了它的启动事件。iii.3.更好的响应:由于本地组件由操作系统渲染。iv.4.成熟稳定的:能够正常工作并很少使你的程序崩溃。b)同样它也有不少的缺点i.更少组件类型:表和树这些重要的组件缺失了。它们是桌面应用程序中普遍使用的。ii.2.缺乏丰富的组件特征:按钮不支持图片。iii.3.无扩展性:AWT 的组件是本地组件。JVM 中的 AWT 类实例实际只是包含本地组件的引用。唯一的扩展点是AWT 的 Canvas 组件,可以从零开始创建自定义组件。然而无法继承和重用一个已有的AWT 组件9.AWT 总结:AWT 是 SUN 不推荐使用的工具集,实际开发中很少使用AWT 而是使用SUN 公司和 Netscape 公司共同开发的一个新的用户界面库-Swing 来开发GUI 应用程序,AWT 是图形用户界面编程的基础,它的布局管理、事件机制、剪贴板操作等内容仍然适用于Swing GUI编程.