为何要用AWT

对于本章要学习的“老式”AWT,它最严重的缺点就是它无论在面向对象设计方面,还是在GUI开发包设计方面,都有不尽如人意的表现。它使我们回到了程序设计的黑暗年代(换成其他话就是“拙劣的”、“可怕的”、“恶劣的”等等)。必须为执行每一个事件编写代码,包括在其他环境中利用“资源”即可轻松完成的一些任务。
许多象这样的问题在Java 1.1里都得到了缓解或排除,因为:
(1)Java 1.1的新型AWT是一个更好的编程模型,并向更好的库设计迈出了可喜的一步。而Java Beans则是那个库的框架。
(2)“GUI构建器”(可视编程环境)将适用于所有开发系统。在我们用图形化工具将组件置入窗体的时候,Java Beans和新的AWT使GUI构建器能帮我们自动完成代码。其它组件技术如ActiveX等也将以相同的形式支持。

既然如此,为什么还要学习使用老的AWT呢?原因很简单,因为它的存在是个事实。就目前来说,这个事实对我们来说显得有些不利,它涉及到面向对象库设计的一个宗旨:一旦我们在库中公布一个组件,就再不能去掉它。如去掉它,就会损害别人已存在的代码。另外,当我们学习Java和所有使用老AWT的程序时,会发现有许多原来的代码使用的都是老式AWT。
AWT必须能与固有操作系统的GUI组件打交通,这意味着它需要执行一个程序片不可能做到的任务。一个不被信任的程序片在操作系统中不能作出任何直接调用,否则它会对用户的机器做出不恰当的事情。一个不被信任的程序片不能访问重要的功能。例如,“在屏幕上画一个窗口”的唯一方法是通过调用拥有特殊接口和安全检查的标准Java库。Sun公司的原始模型创建的信任库将仅仅供给Web浏览器中的Java系统信任关系自动授权器使用,自动授权器将控制怎样进入到库中去。
但当我们想增加操作系统中访问新组件的功能时该怎么办?等待Sun来决定我们的扩展被合并到标准的Java库中,但这不一定会解决我们的问题。Java 1.1版中的新模型是“信任代码”或“签名代码”,因此一个特殊服务器将校验我们下载的、由规定的开发者使用的公共密钥加密系统的代码。这样我们就可知道代码从何而来,那真的是Bob的代码,还是由某人伪装成Bob的代码。这并不能阻止Bob犯错误或作某些恶意的事,但能防止Bob逃避匿名制造计算机病毒的责任。一个数字签名的程序片——“被信任的程序片”——在Java 1.1版能进入我们的机器并直接控制它,正像一些其它的应用程序从信任关系自动授权机中得到“信任”并安装在我们的机器上。
这是老AWT的所有特点。老的AWT代码将一直存在,新的Java编程者在从旧的书本中学习时将会遇到老的AWT代码。同样,老的AWT也是值得去学习的,例如在一个只有少量库的例程设计中。老的AWT所包括的范围在不考虑深度和枚举每一个程序和类,取而代之的是给了我们一个老AWT设计的概貌。

时间: 2025-01-30 15:38:27

为何要用AWT的相关文章

mac版 eclipse在使用AWT制作图形时,添加PopupMenu组件,右键没有用

问题描述 mac版 eclipse在使用AWT制作图形时,添加PopupMenu组件,右键没有用 下面是我的代码,在windows上面可以使用,右键也会出现东西,在mac上面没有用public class PopupMenuTest { private Frame f=new Frame(""测试""); PopupMenu pop=new PopupMenu(); MenuItem copyItem= new MenuItem(""复制&quo

Java SE 6中的AWT模态增强功能

一. 引言 模态一直是我最喜欢的话题之一,至少因为一直存在大量的感兴趣的客户的有关于这方面内容的回馈信息.作为一个Java SE测试工程师,这正是驱动我工作的动力-它使我一直处于忙碌之中,而且还为我的工作带来快乐.另一方面,这也说明了模态是客户端最广为使用的特征之一,不管是使用Swing还是使用AWT进行开发. 在Java SE 6(代码名为Mustang)中,我的工作变得更有意思--在模态方面进行大量的改进.这些改进将为应用程序开发者提供更大的灵活性--在设计可能用到模态对话框行为的程序的过程

SWT、Swing或AWT:哪个更适合您?

本文通过对 Eclipse 的 SWT 和 Java Swing.Abstract Windows Toolkit(AWT)GUI 工具包进行比较,可以帮助新应用程序的开发人员从中选择适当的工具.您可以通过本文了解对每个工具包的基本特性的介绍,以及使用每个工具包的优缺点. 简介 developerWorks 上另外一些作者已经展示了如何在 Swing 和 SWT 之间很好地进行迁移(参见 参考资料).本文的目标是帮助您在开始开发项目之前确定选择使用哪个 GUI 工具包. 但是首先我们要弄清一个问

动态绑定事件(java AWT)

新AWT事件模型给我们带来的一个好处就是灵活性.在老的模型中我们被迫为我们的程序动作艰难地编写代码.但新的模型我们可以用单一方法调用增加和删除事件动作.下面的例子证明了这一点:   //: DynamicEvents.java // The new Java 1.1 event model allows you to // change event behavior dynamically. Also // demonstrates multiple actions for an event.

用Java 1.1 AWT制作窗口和程序片

我们经常都需要创建一个类,使其既可作为一个窗口调用,亦可作为一个程序片调用.为做到这一点,只需为程序片简单地加入一个main()即可,令其在一个Frame(帧)里构建程序片的一个实例.作为一个简单的示例,下面让我们来看看如何对Button2New.java作一番修改,使其能同时作为应用程序和程序片使用:   //: Button2NewB.java // An application and an applet import java.awt.*; import java.awt.event.*

新型AWT

在Java 1.1中一个显著的改变就是完善了新AWT的创新.大多数的改变围绕在Java 1.1中使用的新事件模型:老的事件模型是糟糕的.笨拙的.非面向对象的,而新的事件模型可能是我所见过的最优秀的.难以理解一个如此糟糕的(老的AWT)和一个如此优秀的(新的事件模型)程序语言居然出自同一个集团之手.新的考虑事件的方法看来中止了,因此争议不再变成障碍,从而轻易进入我们的意识里:相反,它是一个帮助我们设计系统的工具.它同样是Java Beans的精华,我们会在本章后面部分进入讲述. 新的方法设计对象做

通过java.awt.Robot的createScreenCapture截取屏幕

通过java.awt.Robot的createScreenCapture截屏. public static void captureScreen(String fileName) throws Exception { Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Rectangle screenRectangle = new Rectangle(screenSize); Robot robot = new

Swing与AWT小应用程序的区别

也许你以前使用过AWT进行图形用户界面(GUI)的设计,感觉如何呢?现在JAVA2提供了Swing包,向大家展示了更丰富的功能,使用它设计的界面会更友好,现在我们就来看一下. 以前你设计小应用程序会扩展Applet(java.applet.Applet):现在为了使用Swing包,你要扩展JApplet(javax.swing.JApplet)让我们先来看一个扩展JApplet小应用程序的实例,然后再分析二者的区别. 程序源代吗如下: (JAppletTest.java) import java

Java GUI:SWT/Swing/AWT的介绍及比较

本文通过对 Eclipse 的SWT 和 Java Swing.Abstract Windows Toolkit (AWT)GUI 工具包进行比较,可以帮助新应用程序的开发人员从中选择适当的 工具. 您可以通过本文了解对每个工具包的基本特性的介绍,以及使用 每个工具包的优缺点. 简介 developerWorks 上另外一些作者已 经展示了如何在 Swing 和 SWT 之间很好地进行迁移(参见 参考资料).本文 的目标是帮助您在开始开发项目之前确定选择使用哪个 GUI 工具包. 但 是首先我们