Java开发教程--qyjohn版 [4]
发表时间:2004-04-14 17:17:36发信人: 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
______________________________________________________________________
[m[1;31m※ 来源:·BBS 水木清华站 smth.org·[FROM: 219.238.203.*][m
| 上一篇 | 下一篇 |
| 姓名: | |
| 评论: | |
|
请输入下面这首诗词的作者姓名。 醉里挑灯看剑,梦回吹角连营。 |
|
| 答案: | |
云与清风常拥有,
冰雪知音世难求。
击节纵歌相对笑,
案上诗书杯中酒。
2020年12月31日
洛杉矶
最新评论
2026-07-23 11:37:04
qyjohn 评论了 《几句翻译》
2026-07-21 20:11:28
wells 评论了 《几句翻译》
2025-11-15 06:29:51
qyjohn 评论了 《青桔》
2025-11-14 01:55:04
wells 评论了 《青桔》
2025-10-24 18:04:06
Ted Wang 评论了 《关于作者(About Me)》
2025-03-27 08:28:09
Max 评论了 《父亲走了》
2025-03-08 04:13:52
W 评论了 《我不想颂扬普京大帝》
2024-07-22 16:02:03
云思 评论了 《无题》
2024-06-27 10:01:54
yiming 评论了 《致访客(Welcome)》
2024-05-06 08:50:06
qyjohn 评论了 《致访客(Welcome)》
2024-05-03 19:49:00
jimmie 评论了 《致访客(Welcome)》
2024-02-19 03:32:57
林小静 评论了 《埋剑渡》
2024-01-05 03:54:28
路过者 评论了 《2023年度盘点》
2024-01-04 10:22:05
qyjohn 评论了 《致访客(Welcome)》
2024-01-04 08:05:13
qyjohn 评论了 《2023年度盘点》