AWT
术语名称抽象窗口工具箱(AWT)
术语解释AWT(Abstract Windowing Toolkit),中文译为抽象窗口工具包,是Java提供的用来建立和设置Java的图形用户界面的基本工具。AWT由Java中的java.awt包提供,里面包含了许多可用来建立与平台无关的图形用户界面(GUI)的类,这些类又被称为组件(components)。
抽象窗口工具包 (Abstract Windowing Toolkit) (AWT)是Java的平台独立的窗口系统, 图形和用户界面器件工具包。AWT是Java基础类 (JFC)的一部分,为Java程序提供图形用户界面(GUI)的标准API。
AWT提供了JavaApplet和Java Application中可用的用户图形界面GUI中的基本组件(components)。由于Java是一种独立于平台的程序设计语言,但GUI却往往是依赖于特定平台的,Java采用了相应的技术使得AWT能提供给应用程序独立于机器平台的接口,这保证了同一程序的GUI在不同机器上运行具有类似的外观(不一定完全一致)。
Java1.0的AWT(旧AWT)和Java1.1以后的AWT(新AWT)有着很大的区别,新的AWT克服了旧AWT的很多缺点,在设计上有较大改进,使用也更方便,这里主要介绍新的AWT, 但在Java1.1及以后版本中旧的AWT的程序也可运行。
抽象窗口工具包AWT (AbstractWindow Toolkit) 是 API为Java 程序提供的建立图形用户界面GUI (Graphics User Interface)工具集,AWT可用于Java的applet和applications中。它支持图形用户界面编程的功能包括: 用户界面组件;事件处理模型;图形和图像工具,包括形状、颜色和字体类;布局管理器,可以进行灵活的窗口布局而与特定窗口的尺寸和屏幕分辨率无关;数据传送类,可以通过本地平台的剪贴板来进行剪切和粘贴。
Java释出的时候,AWT作为Java最弱的组件受到不小的批评。最根本的缺点是AWT在原生的用户界面之上仅提供了一个非常薄的抽象层。例如,生成一个AWT的复选框会导致AWT直接调用下层原生例程来生成一个复选框。不幸的是,一个Windows平台上的复选框同MacOS平台或者各种UNIX风格平台上的复选框并不是那么相同。
这种糟糕的设计选择使得那些拥护Java“一次编写,到处运行 (write once, run anywhere)”信条的程序员们过得并不舒畅,因为AWT并不能保证他们的应用在各种平台上表现得有多相似。一个AWT应用可能在Windows上表现很好可是到了Macintosh上几乎不能使用,或者正好相反。在90年代,程序员中流传着一个笑话:Java的真正信条是“一次编写,到处测试 (write once, test everywhere)”。导致这种糟糕局面的一个可能原因据说是AWT从概念产生到完成实现只用了一个月。
在第二版的Java开发包中,AWT的器件很大程度上被Swing工具包替代。Swing通过自己绘制器件而避免了AWT的种种弊端:Swing调用本地图形子系统中的底层例程,而不是依赖操作系统的高层用户界面模块。
AWT中类的层次结构在AWT中,所有能在屏幕上显示的组件(component)对应的类,均是抽象类Component的子类或子孙类。这些类均可继承Component类的变量和方法。 Container类是Component的子类,它也是一个抽象类,它允许其他的组件(Component)加入其中。加入的Component也允许是Container类型,即允许多层嵌套的层次结构。Container类在将组件以合适的形式安排在屏幕上时很有用,它有两个子类,Panel和Window,它们不是抽象类。
Window对应的类为java.awt.Windows, 它可独立于其他Container而存在,它有两个子类, Frame和Dialog, Frame是具有标题(title)和可伸缩的角(resize corner)的窗口(Window)。Dialog则没有菜单条,虽然它能移动,但不能伸缩。
滚动面板(ScrollPane)也是Window类的子类,这里就不讨论了。
Panel对应的类为java.awt.Panel,它可包含其他Container类型的组件,或包含在浏览器窗口中。Panel标识了一个矩形区域,该区域允许其他组件放入。Panel必须放在Window或其子类中才能显示。
使用AWTjava.awt包提供了基本的java程序的GUI设计工具。主要包括下述三个概念:
·组件--Component
·容器--Container
·布局管理器--LayoutManager
Java的图形用户界面的最基本组成部分是组件(Component),组件是一个可以以图形化的方式显示在屏幕上并能与用户进行交互的对象,例如一个按钮,一个标签等。组件不能独立地显示出来,必须将组件放在一定的容器中才可以显示出来。 类java.awt.Component是许多组件类的父类,Component类中封装了组件通用的方法和属性,如图形的组件对象、大小、显示位置、前景色和背景色、边界、可见性等.
容器(Container)也是一个类,实际上是Component的子类,因此容器本身也是一个组件,具有组件的所有性质,但是它的主要功能是容纳其它组件和容器。布局管理器(LayoutManager):每个容器都有一个布局管理器,当容器需要对某个组件进行定位或判断其大小尺寸时,就会调用其对应的布局管理器。
容器java.awt.Container是Component的子类,一个容器可以容纳多个组件,并使它们成为一个整体。容器可以简化图形化界面的设计,以整体结构来布置界面。所有的容器都可以通过add()方法向容器中添加组件。有三种类型的容器:Window、Panel、ScrollPane,常用的有Panel, Frame, Applet。
使用Frame的例子:
import java.awt.*;
public class MyFrame extends Frame{
public static void main(String args[ ]){
MyFrame fr = new MyFrame("Hello Out There!");
//构造方法
fr.setSize(200,200);
//设置Frame的大小,缺省为(0,0)
fr.setBackground(Color.red);
//设置Frame的背景,缺省为红色
fr.setVisible(true);
//设置Frame为可见,缺省为不可见
}
public MyFrame (String str){
super(str); //调用父类的构造方法
}
}