Java开发教程–qyjohn版 [4]

By , 2004年4月14日 5:17 下午

发信人: qyjohn (Sweet Potato — 清扬婉兮,适我愿兮), 信区: JavaTutorial
标  题: Java开发教程–qyjohn版 [4]
发信站: BBS 水木清华站 (Wed Apr 14 16:11:44 2004), 转信

作业4:图形用户界面基础

1.  一些题外话

到目前为止我们已经全面了讲述了一个优秀的程序员所需要具
备的三个要素:开发环境,生存技巧,语言基础。不过从交上
来的作业看,大多数网友都没有能够领会我试图通过这一系列
教程传递出来的一些观点,而是直奔主题完成作业中与Java语
言相关的部分。然而还是有部分网友交上了关于Google,天网
以及提问的智慧的作业,使我于失落当中能够感受到些许的慰
籍。

星期一我在内部版面做了一个关于本站Java技术系列板块访问
统计,出人意料的发现新生的JavaTutorial版已经以5057人次
的访问量在所有Java技术系列板块里名列第二。然而在版面上
交作业的网友还是不多,想来一定还有很多人在暗地里自己努
力着。我深切的希望在以后的日子里能够在版面上看见更多的
新面孔,因为这里是专门为新手开辟的空间,活跃在版面上的
都是正在学习Java的朋友,我相信你们能够通过这个版面来互
相帮助和提高。

2.  图形用户界面

某日重读郑振铎先生所著<<插图本中国文学史>>,在<<魏与西 晋的诗人>>这一章读到如下几句,思考良久。” 论者平潘岳,
潘尼,每以岳为高出于尼远甚。实则岳唯哀悼之诗最为杰出耳。
岳字安仁,荥阳中牟人。美姿仪。少时每出,妇人掷果满车。
善属文,清绮绝世。举秀才为郎。后迁给事黄门侍郎。” 在这
里我们看到潘岳虽然在文学成就上比不上潘尼,但是由于潘岳
长的比较帅,所以后人在评价这两个人的时候通常都会偏袒于
他。事实上在我们程序设计这个行当也是一样,在用户的眼光
里,一个吸引人的图形用户界面远远要比一些强大的功能要受
欢迎得多。

说起Java语言的的跨平台优势,一般的开发人员都会想到在两
个方面:一个是网络,另一个就是图形界面。针对一个特定的
平台写一个网络程序或者图形界面并不是一件难事,难得是要
让这程序在不同的平台上都能够运行 — 请注意,这里我说的
是运行,至于运行的效果如何,那就是另外一回事了。很多人
对Java语言的图形界面颇有非议,说这个东西又慢又难看。我
想虽然这个东西又慢又难看,然而它毕竟跑了起来,至少也该
比那些跑不起来的东西要强那么一点点吧。

在Java语言标准版中有两套图形界面系统,一个是AWT ,另外
一个是SWING 。在我以前的文章中,有一些关于AWT和SWING的
简单介绍,抄录如下:

AWT 是Abstract Window ToolKit (抽象窗口工具包)的缩写,
这个工具包提供了一套与本地图形界面进行交互的接口。AWT
中的图形函数与操作系统所提供的图形函数之间有着一一对应
的关系,我们把它称为peers。 也就是说,当我们利用AWT 来
构件图形用户界面的时候,我们实际上是在利用操作系统所提
供的图形库。由于不同操作系统的图形库所提供的功能是不一
样的,在一个平台上存在的功能在另外一个平台上则可能不存
在。为了实现Java语言所宣称的”一次编译,到处运行”的概念,
AWT不得不通过牺牲功能来实现其平台无关性,也就是说,AWT
所提供的图形功能是各种通用型操作系统所提供的图形功能的
交集。由于AWT 是依靠本地方法来实现其功能的,我们通常把
AWT控件称为重量级控件。

Swing是在AWT的基础上构建的一套新的图形界面系统,它提供
了AWT 所能够提供的所有功能,并且用纯粹的Java代码对AWT
的功能进行了大幅度的扩充。例如说并不是所有的操作系统都
提供了对树形控件的支持, Swing利用了AWT中所提供的基本作
图方法对树形控件进行模拟。由于 Swing控件是用100%的Java
代码来实现的,因此在一个平台上设计的树形控件可以在其他
平台上使用。由于在Swing 中没有使用本地方法来实现图形功
能,我们通常把Swing控件称为轻量级控件。

说到这里我想各位读者应该明白了AWT和Swing之间的基本区别:
AWT 是基于本地方法的C/C++程序,其运行速度比较快;Swing
是基于AWT 的Java程序,其运行速度比较慢。在一般的基于PC
或者是工作站的标准Java应用中,硬件资源对应用程序所造成
的限制往往不是项目中的关键因素,所以在标准版的Java中提
倡使用Swing, 也就是通过牺牲速度来实现应用程序的功能。
因此在Sun公司提供的Java Tutorial里面,已经删除了关于AWT
的章节,需要的网友要从Sun 的网站将其单独下载到本地硬盘
才可以阅读这部分的内容。

熟悉嵌入式系统的网友知道,目前在嵌入式系统上的Java虚拟
机通常都提供了对AWT的支持,但是不提供对SWING的支持。这
是因为对于一个嵌入式应用来说,目标平台的硬件资源往往非
常有限,而应用程序的运行速度又是项目中至关重要的因素。
在这种矛盾的情况下,简单而高效的AWT 当然成了嵌入式Java
的第一选择。

除了AWT和SWING之外,还有被称为SWT 的一套图形界面系统。
由于SWT 不是Java语言的一部分,在这个教程中我们不会涉及
到。在J2ME中也有独立于AWT和SWING的图形界面系统,这些内
容我们会在本教程的J2ME部分详细讲述。

3   阅读与作业

阅读Java Tutorial 里面的如下章节,手工输入兵变已运行里
面的所有例程,在读书报告里面详细记录你在学习过程中遇到
的问题、解决方法,以及其他感想。

1) User Interfaces that Swing: A Quick Start Guide

2) Creating a GUI with JFC/Swing

3) Creating a User Interface (AWT Only)

第三部分的内容,需要单独从Sun的网站下载,地址为:

http://java.sun.com/docs/books/tutorial/information/download.html

作业:

1)  用AWT和SWING分别构建一个带有一个窗口,十个按钮,十
五个其他控间的应用程序,比较其启动时间和反应速度。
在作业中详细描述你的机器配置,操作系统,Java虚拟机
的版本,以及你对这两个应用程序的个人感觉。

2)  在AWT和SWING两种方案里面选用一种方案完成下面的应用
程序,详细说明你选用AWT或者SWING的理由。

在本地机器上有一个文本文件passwd,每一行包含一个用
户名和密码,用户名和密码之间用空格分开。应用程序启
动的时候跳出一个对话框要求用户输入用户名和密码,接
受输入后到passwd文件里面验证用户名和密码是否正确。
如果用户名和密码正确,进入下一步的内容;如果用户名
和密码不正确,给出恰当的提示。

通过用户身份认证后,进入主用户界面。主用户界面包括
四个小按钮以及一个大的显示区域,其中一个按钮用来退
出程序,另外三个按钮的功能自行定义。在显示区域里面
显示一个圆形,开始的时候在屏幕的中间。当用户按下上
下左右箭头的时候,该圆形向相应的方向移动。每次按键
导致的移动量自行决定。

以上两个作业,在提交的时候都要附上运行时刻的截图。
如果你不会在本BBS 贴图,最好在交作业的时候使用本站
的WWW 界面,那里贴图比较方便一些。

由于这次阅读的内容比较多,第5 次教程我会等到下下周再贴
出,这样各位有一个半星期的时间来完成这次阅读和作业。


(“`-”-/”).___..–””`-._                         云与清风常拥有,
`6_ 6  )   `-.  (     ).`-.__.`)                 冰雪知音世难求。
(_Y_.)’  ._   )  `._ `. “-..-                  击节纵歌相对笑,
_..`–‘_..-_/  /–‘_.’ ,’                        案上诗书杯中酒。
(il),-”  (li),’  ((!.-‘                              2000.12.31
______________________________________________________________________

※ 来源:·BBS 水木清华站 smth.org·[FROM: 219.238.203.*]

Leave a Reply

Panorama Theme by Themocracy