AWT是Java中支持图形化用户界面GUI设计的一个工具集。AWT的API是独立于平台的,但设计出来的界面在各种平台的风格不同,利用API中各种类在特定平台下的对等组件peers提供具体平台下的实现。
欲建立一个GUI首先确定所用的组件及其布局,然后实现其事件的响应。组件的类型有多种,如常用的Button、CheckBox等,均为Component跟MenuComponent类的子类,这些组件不能独立使用,必须放置于某个容器中。
容器本身也是一个组件,可以容纳多个组件,使它们成为一个整体,容器之间可以嵌套。常用的容器有Frame、Panel、Applet等。其中Frame一般作为顶级窗口使用,而Panel则必须放在Window或者Frame中。
为了使得组件在容器中的摆放、布局有序,须使用布局管理器,Java提供了FlowLayout、BorderLayout、GridLayout、CardLayout、GridBagLayout这五种布局管理器,以实现不同风格的组件布局。其中FlowLayout为Frame和Applet中默认的布局管理,CardLayout可以使得组件像卡片般叠放,且可以进行卡片切换。欲使用某种布局管理器时,须用setLayout设置容器的布局管理器为该类型。
当界面做好之后,组件的事件响应才是GUI设计与实现的核心。其过程为:当用户在界面上作出某种动作时,监测GUI的操作系统将发生的事件传送给GUI应用程序,程序则根据事件做出反应。AWT的事件处理模型为:事件源(组件)产生事件(EVENT)交由事件处理器处理。目前的事件处理机制为委托方式(监听方式),即事件源(组件)注册了一个或者多个包含事件处理器的对象(监听器),当事件产生时组件将事件发送给监听器,由其对事件进行相应的处理。
其过程为:定义监听器、注册监听器。一个对象通过实现多种接口可以监听多种事件,也可以通过匿名类、内部类实现多个监听器。由于在定义监听器时利用适配器可以简化程序,但同时又限制了对其它类的继承,这时可以通过在类的内部定义监听类来实现多个监听器的动作。