具体描述
本书详细介绍Java中的AWT(
作者简介
目录信息
第一部分 入门
第1章 绪论
1.1Java基本类
1.2抽象窗口工具集
1.3同位体和平台独立
1.3.1轻量构件
1.3.2AWT和Swing构件
1.3.3AWT和2DAPI
1.4构件:AWT的基础
1.5构件、容器和布局管理器
1.5.1构件
1.5.2基本构件工具
1.5.3容器
1.5.4布局管理器
1.6小结
第2章 applet和应用程序
2.1 Java appl et
2.1.1使用appletv iewer
2.1.2浏览器的基础结构
2.1.3java.awt.Applet类
2.1.4关键Applet方法
2.1.5java.awv.Comoo nent显示方法
2.2Java应用程序
2.2.1 设置应用程序
2.2.2显示应用程序
2.3组合applet 和应用程序代码
2.4小结
第二部分 图形和图像
第3章 图形
3.1 java.awt.Graphics
3.2Graphics参数
3.3图形坐标系
3.3.1绘制图形形状
3.3.2绘制构件的四周边界
3.3.3填充形状
3.4Graphics引用
3.4.1引用副本的Graphics引用
3.4.2Graphics引用的寿命
3.4.3处理Graphics
3.5绘制和填充形状
3.5.1画直线
3.5.2画折线
3.5.3绘制矩形
3.5.4画弧
3.5.5绘制椭圆
3.5.6绘制多边形
3.5.7绘制文本
3.6转换坐标系原点
3.7剪贴
3.8图形模式
3.9创建图形
3.10小结
第4章 颜色和字体
4.1颜色模式
4.1.1索引颜色模式
4.1.2直接颜色模式
4.2java.awt.Color类
4.3系统颜色
4.4字体和字体度量
4.4.1Font类
4.4.2FontMetrics类
4.5小结
第5章 加载和显示图像
5.1Image 类和Image包
5.2图像生产者和图像消费者
5.2.1异步图像生产
5.2.2ImageProducer
5.2.3ImageObserver
5.3加载和显示图像
5.4applet 和应用程序之间的区别
5.5等待图像加载
5.6一次绘制图像的一行扫描线
5.7MediaTracker
5.8动画GIF
5.9AWT构件作为图像观察者
5.10创建图像
5.11加载图像作为资源
5.12小结
第6章 图像过滤
6.1Image Producer接口
6.2 mageC onsume r接口
6.3图像生产者和图像消费者之间的关系
6.4AWT图像过滤器
6.4.1CropImageFilter
6.4.2使用常规图像过滤器
6.4.3ReplicateScal eFilter和AreaAveraging
ScaleFilter
6.4.4组合图像过滤器
6.5ImageConsumer 属性
6.6实现自定义图像过滤器
6.7扩展RGBImageFilter
6.7.1DissolveFilter
6.7.2DissolveEdgeFilter
6.8扩展ImageFilter
6.8.1ImageFilter类
6.8.2向图像过滤器传输图像位
6.8.3用于传输像素的ColorModel
6.8.4扩展ImageFilter的溶解过滤器
6.8.5波形过滤器
6.9实现ImageConsumer接口
6.9.1图像溶解
6.9.2Dissolver类的实现
6.10双缓冲入门
6.11小结
第7章 无过滤图像处理
7.1缩放和闪烁图像
7.2抓取像素
7.3内存图像源
7.3.1使用MemoryImageSource
裁剪图像
7.3.2内存图像源和动画
7.4小结
第三部分 事件和布局管理器
第8章 基于继承的事件处理
8.1旧AWT事件模型
8.1.1覆盖事件处理方法
8.1.2被传播的事件
8.1.3事件类型常量
8.1.4事件的向外传播
8.1.5覆盖被传播的事件的处理
8.2事件修饰常数
8.3鼠标按钮事件
8.4关于鼠标和按钮
8.5监控鼠标事件
8.6检测双击
8.7动作事件
8.8标识构件
8.9基于继承的事件模型的缺点
8.9.1事件的传播
8.9.2继承的要求
8.9.3将事件处理插入到构件类中
8.9.4传送事件的责任
8.9.5handleEvent()转换语句
8.10小结
第9章 授权事件模型
9.1授权事件模型
9.1.1构件、事件和监听者
9.1.2过滤事件
9.2结构概述
9.2.1事件
9.2.2构件作为事件源
9.2.3多点传送事件源
9.2.4 单点传送事件源
9.2.5事件源接口
9.2.6监听者
9.2.7事件处理方法的JavaBeans设计模式
9.3AWT适配器
9.4构件事件
9.4.1构件和容器事件
9.4.2焦点事件
9.4.3键盘事件
9.4.4鼠标和鼠标移动事件
9.4.5窗口事件
9.4.6画布和面板的焦点和键盘事件
9.4.7消耗输人事件
9.4.8绘制事件
9.5语义事件
9.5.1动作事件
9.5.2可调事件
9.5.3项目事件
9.5.4 文本事件
9.6事件适配器
9.6.1处理没有适配器的多点
事件源事件
9.6.2 类型安全的多路处理适配器
9.6.3一般的多路处理适配器
9.7内部类
9.7.1三维按钮
9.7.2 在单独的监听者类中封装事件处理
代码
9.7.3监听自己
9.7.4 命名内部类
9.7.5匿名内部类
9.7.6 修改默认的事件处理行为
9.8 从自定义构件中激发AWT事件
9.9 从自定义构件中激发自定义事件
9.9.1一个未经专门设计的方案
9.9.2 有关步骤
9.9.3开发自定义事件类
9.9.4 开发监听者接口
9.9.5 为注册监听者定义接口
9.9.6 开发可以激发自定义事件的自定义
构件
9.10 调度事件和AWT事件队列
9.11有效事件
9.12基于继承的机制
9.13 事件处理设计
9.13.1使用基于继承的事件模型
9.13.2 监听自己
9.13.3 在单独的类中封装事件
处理代码
9.13.4 使用内部类
9.13.5 命名内部类与匿名内部类相比
9.13.6 向容器传播事件
9.14 小结
第10章 构件、容器和布局管理器
10.1最大的三种AWT构件
10.2布局管理器
10.2.1两种类型的布局管理器
10.2.2布局管理器和容器空白区
10.2.3同位体和空白区
10.2.4布局管理器和构件首选尺寸
10.3绘制一个容器的构件
10.4强制一个容器布置它的构件
10.5标准AWT布局管理器
10.5.1使用何种布局管理器
10.5.2BorderLayout布局管理器
10.5.3CardLayout布局管理器
10.5.4 FlowLayout布局管理器
10.5.5GridLayout布局管理器
10.6GridBagLayout布局管理器
10.6.1GrdBaglayout和GridBag
Constraints
10.6.2网格单元和显示区
10.6.3与构件比较的显示区
10.6.4GridBagConstraints. anchor
10.6.5GridBagConstraints. fill
10.6.6GridBagConstraints.gridx和GridBag-
Constraints.gridy
10.6.7GridBagConstraints.gridwidth和GridBa g-
Constraints.gridheight
10.6.8GridBagConstraints.weightx和GridBag-
Constraints.weighty
10.6.9Grid BagC onstra ints.i nsets
10.6.10 GridBagConst raint s.ip adx 和GridBag-
Constraints.ipady
10.6.11Grid BagLab
10.6.12 GridBagLayout和输入表单
10.6.13在嵌套的面板中布置构件
10.6.14嵌套面板之间的通信
10.6.15GridLabApplet的实现
10.7 null 布局管理器
10.8自定义布局管理器
10.8.1BulletinLayout
10.8.2运行BulletinLayout自定义布局管
理器
10.8.3Row Layout
10.8.4 运行RowLayout自定义布局管
理器
10.8.5RowLayoutApplet的实现
10.8.6ColumnLayout
10.8.7运行ColumnLayout 自定义布局管
理器
10.9 小结
第四部分 AWT构件
第1章 AWTComponent类
11.1构件
11.2java.awt.Component
11.3构件属性
11.4不赞成的方法
11.5构件的位置、边界和坐标
11.6构件的首选、最小和最大尺寸
11.7构件的可见性和响应
11.8构件和同位体
11.9显示构件
11.10 构件和zorder
11.11构件和光标
11.12构件和串行化
11.13构件和国际化
11.13.1Locale
11.13.2资源包
11.13.3Simplel18Ntestapplet
11.13.4资源包属性
11.13.5从国际化代码中分离出GUI
11.13.6 可用地区和两个字符的编码
11.14 构件和JavaBeans
11.14.1约束属性
11.14.2在自定义构件中实现
约束属性
11.15构件和树锁定
11.16小结
第12章 基本构件:标签、按钮、画布
和面板
12.1标签和按钮
12.1.1 java.awt.Label
12.1.2java.awt.Button
12.2 画布和面板
12.2.1java.awt.Canvas
12.2.2java.awt.Panel
12.3小结
第13章 项目选择:复选框 选择框和
列表
13.1复选框
13.1.1java .awt.ItemSel ectable接口
13.1.2java.awt.Checkbox
13.1.3相容的复选框
13.1.4 相互排斥的复选框
13.2选择框和列表
13.2.1是采用列表还是选择框
13.2.2java.awt.Choice
13.2.3java.awt.list
13.2.4 双列表构件
13.3小结
第14章 文本构件
14.1java.awt.TextCompone nt
14.1.1文本选择
14.1.2TextComponent监听者
14.2java.awt.TextField
14.2.1输入的有效性
14.2.2 退出有效性
14.2.3过程中确认
14.3java.awt.TextArea
14.4 小结
第15章 滚动:滚动条与滚动框
15.1java.awt.Scrollbar
15.2java.awt.ScrollPane
15.2.1滚动构件
15.2.2滚动图像
15.2.3程序控制滚动
15.3小结
第16章 窗口、框架与对话框
16.1java.awt.Window
16.1.1快闪屏
16.1.2提示框帮助
16.2 java.awt.Frame
16.3java.awt.Dialog
16.3.1模式对话框与多线程
16.3.2java.awt.FileDialog
16.4 小结
第17章 菜单
17.1菜单类
17.2文件菜单
17.3处理菜单事件
17.4拖离菜单
17.5MenuBarPrinter
17.6FrameWithMenuBar类
17.7帮助菜单
17.8复选框菜单项
17.9级联菜单
17.10动态更改菜单
17.11弹出式菜单
17.11.1弹出式菜单与构件
17.11.2处理弹出式菜单事件
17.11.3 显示与构件相关的弹出式菜单
17.12小结
第18章 无鼠标操作与打印
18.1无鼠标操作
18.2键盘遍历
18.2.1标准AWT构件与键盘遍历
18.2.2 自定义构件及其键盘遍历
18.3菜单快捷键
18.3.1菜单类与快捷键
18.3.2菜单快捷键示例
18.4打印
18.4.1获取PrintGraphics的引用
18.4.2打印自身的applet
18.4.3打印对话框及其属性
18.4.4 页码设置
18.5 小结
第19章 轻量构件
19.1引入轻量构件
19.1.1AWT:重量构件的世界
19.1.2轻量构件与重量构件
19.2简单的轻量构件
19.2.1简单的重量构件
19.2.2从重量构件到轻量构件
19.3轻量容器
19.4轻量构件与zorder
19.5轻量构件及其Graphics
19.6轻量构件与首选尺寸
19.7小结
第五部分 高级主题
第20章 剪贴板与数据传输
20.1java.awt.datatransfe r软件包
20.2Clipboard类
20.2.1将数据复制到剪贴板及从剪贴板
取出数据
20.2.2ClipboardOwner类
20.3系统剪贴板
20.4 局部剪贴板
20.5数据传送机制
20.5.1数据格式
20.5.2Transferable对象与数据格式
20.5.3StringSelection
20.6 将图像复制到剪贴板
20.6.1ImageSelection――封装图像的
Transferable对象
20.6.2使用ImageSelection类
20.6.3增加另外一种数据格式
20.7传递自定义AWT构件
20.7.1封装自定义AWT构件的可传递
对象
20.7.2图像按钮传送applet
20.8小结
第21章 拖放技术
21.1j四a.awt dnd 软件包
21.2拖动源与放置目标
21.2.1简单的拖放程序范例
21.2.2拖动意图
21.2.3拖动源
21.2.4放置目标
21.2.5事件
21.2.6DragSourceDragEvent与DragSource
DropEvent
21.2.7DropTargetDragE vent与 DropTarget
DropEvent
21.2.8特定的拖动源与放置目标
21.2.9继承与授权
21.2.10映射
21.2.11自动滚动
21.3小结
第22章 自定义对话框
22.1对话框类
22.1.1 GJTDialog
22.1.2非模式对话框和DialogClient接口
22.1.3再论GJTDialog
22.2WorkDialog
22.3ButtonPanel
22.4Postcard
22.5MessageDialog
22.6YesNoDialog
22.7QuestionDialog
22.8小结
第23章 橡皮带技术
23.1橡皮带类
23.2Rubberband基本类
23.2.1Rubberband方法及类成员
23.2.2以XOR模式绘图
23.2.3绘制橡皮带线条
23.2.4绘制橡皮带矩形与椭圆形
23.3橡皮带面板
23.4使用DrawingPanel类
23.5重分解单元测试
23.6小结
第24章 双缓冲技术
24.1双缓冲技术与动画
24.2双缓冲如何工作
24.3可拖动轻量构件与双缓冲容器
24.3.1Util类
24.3.2BackingStore类
24.3.3DoubleBufferedContainer类
24.3.4Lightweight类
24.4小结
第25章 子图形动画
25.1构成
25.2序列与子图形
25.2.1Sequence
25.2.2子图形
25.3Playfield与DoubleBufferedContainer
25.4冲突检测
25.4.1CollisionArena
25.4.2CollisionDetector
25.4.3SpriteCollisionDe tector
25.4.4EdgeCollision
25.5使用animation软件包
25.5.1简单的动画
25.5.2碰撞动画
25.5.3两个子图形之间的冲突
25.6小结
附录A AwT类框图
附录B 关于本书的CD-ROM
· · · · · · (收起)
读后感
用户评价
从整体阅读体验来看,这本书更像是一本为“计算机科学系学生”编写的、关于AWT基础架构的权威参考手册,而不是一本面向“图形界面设计师”的实践指南。它的语言风格是学术性的、精准的,每一个术语的定义都力求无懈可击,这无疑保证了其内容的准确性和深度。但是,这种过度追求底层精确性的风格,使得书本在“如何创造美观的、用户友好的界面”这一核心诉求上显得力不从心。例如,书中花了大量的篇幅去解释`Dimension`类和`Rectangle`类是如何进行精确计算的,这些数学细节对于确保程序正确运行至关重要,但对于一个希望快速设计出一个具有良好视觉比例界面的读者来说,这些计算细节显得过于繁琐,我更需要的是一种基于经验的“设计规则”或“最佳实践”的总结。这本书教会了我AWT**如何工作**,但它没有很好地引导我思考AWT**如何能做得更好看**。如果将AWT比作一块未雕琢的玉石,这本书提供了切割和打磨的精确工具和物理定律,但缺失了关于如何构思最终艺术形态的审美指导。
这本书的排版和插图质量,坦白地说,有些跟不上我心中的预期。虽然它标榜是“卷Ⅰ”,似乎暗示着后续会有更精彩的内容,但就目前这本而言,大量的代码示例充斥着页面,这些代码虽然功能完整,但视觉上缺乏必要的“呼吸感”。很多关键代码块没有使用醒目的颜色标记关键API调用,导致阅读代码时需要花费额外的精力去识别哪些是需要重点关注的核心方法。更让我感到困惑的是,书中的一些示意图,特别是关于组件层级和事件传播路径的图示,线条过于密集,且缺乏必要的简化和提炼。它们更像是IDE自动生成的结构图,而非经过精心设计的教学辅助材料。举个例子,描述`Toolkit`如何获取系统资源的那一页,密密麻麻的箭头和方框几乎让人找不着北,如果能用更具象征意义的图标或者流程图来辅助说明,效果可能会好很多。我尝试对照书中的例子运行代码,发现有些示例的依赖库版本描述不够清晰,导致我不得不花费不少时间去调试环境配置,这在一定程度上打断了学习的连贯性。对于一本侧重于“图形设计”的书籍,视觉体验本身就是学习体验的一部分,这一点上,这本书略显粗糙,更偏向于教科书式的严谨,而非设计导向的直观性。
这本书的封面设计着实让人眼前一亮,那种深邃的蓝色调配上简洁的字体,透着一股专业和沉稳的气息,一看就知道不是那种浮于表面的速成手册。我抱着极大的期望翻开了第一章,心想终于能系统地啃下AWT这块“硬骨头”了。然而,刚读了几页,我就发现我对“图形设计”的理解可能需要重新校准了。书里大量篇幅似乎聚焦于Java底层GUI组件的构建逻辑和事件处理机制,这本身无可厚非,毕竟AWT是基础。但对于一个期望快速上手设计出美观界面的读者来说,前几章的理论推导和抽象概念占据了主导地位,就像在学习如何打地基时,工匠非要跟你详细解释每块砖头的分子结构一样,虽然扎实,但初期体验略显枯燥。特别是关于布局管理器那几节,讲解得极其详尽,每一种布局的边界条件和计算公式都写得清清楚楚,这无疑是为那些想深入理解AWT渲染流程的资深开发者准备的“干货”,但对于初学者而言,信息密度过大,容易产生畏难情绪。我期待的那些关于色彩搭配、字体选择在界面中的艺术性应用,或者如何利用AWT实现一些视觉冲击力的动画效果的“设计技巧”,在开篇部分几乎没有涉及,倒是把重点放在了如何确保组件在不同操作系统下的一致性和稳定性上,这更像是系统编程指南而非“设计”导论。
这本书的配套CD内容,是吸引我购买的重要因素之一,毕竟“附CD”在现在这个时代本身就是一种情怀。但当我满怀期待地放入光驱,试图找到那些能激发我设计灵感的“设计资源”时,发现内容结构着实让人摸不着头脑。CD里主要存放的似乎是与书中所有代码示例相对应的源代码文件和一些编译好的可执行演示程序。源代码组织得倒是井井有条,但除了代码,关于“图形设计”的部分,比如预设的调色板、精美的图标集、或者是一些可复用的UI样式表(如果AWT支持的话,我本以为会有一些相关的辅助工具),几乎是寥寥无几。我本来希望CD里能提供一些现成的、经过优化的AWT组件皮肤或者主题文件,这样我就可以快速地将书中枯燥的默认组件替换成更具现代感的界面。结果发现,CD里的内容,本质上还是对书本文字内容的补充和复现,并没有带来超出预期的“设计资产”。这让我感到有些失望,感觉这个“附CD”更多是作为代码备份的载体,而非真正意义上的“设计资源库”。
深入阅读到关于事件处理模型的章节时,我开始体会到作者在讲解深度上的压倒性优势,但这恰恰也成了我体验中的一个挑战点。作者对AWT事件模型的解析,几乎可以称得上是“庖丁解牛”式的细致。他不仅讲解了事件的产生、监听和传播,还深入探讨了事件分派线程(EDT)的运作机制,以及在多线程环境下进行GUI编程时可能遇到的陷阱。这种讲解方式的优点是极其严谨,可以有效避免读者在实际项目中遇到那些难以追踪的线程安全问题。然而,对于我这种希望先建立起一个“能用”的模型,再逐步优化性能的读者来说,开篇就抛出如此底层的并发控制知识,显得过于沉重。我感觉自己像是在学习开车时,还没学会踩油门和刹车,就被要求去理解发动机的四冲程循环原理。书中的论述逻辑非常跳跃,前一页还在讲解简单的按钮点击事件,下一页可能就直接跳跃到如何手动实现一个低级别的输入事件过滤器。缺乏一个平滑的过渡,让我在消化这些高级概念时,不得不频繁地停下来,查阅大量的Java并发编程背景知识,这极大地拖慢了对AWT核心用法的掌握速度。
这本砖块的书成为我当时学习Java图形设计时的床头常客之一。
这本砖块的书成为我当时学习Java图形设计时的床头常客之一。
这本砖块的书成为我当时学习Java图形设计时的床头常客之一。
这本砖块的书成为我当时学习Java图形设计时的床头常客之一。
这本砖块的书成为我当时学习Java图形设计时的床头常客之一。