第一部分 入门 1
第1章 绪论 1
1.1 Java基本类 1
1.2 抽象窗口工具集 1
1.3 同位体和平台独立 2
1.3.1 轻量构件 3
1.3.2 AWT和Swing构件 3
1.3.3 AWT和2D API 3
1.4 构件:AWT的基础 4
1.5 构件、容器和布局管理器 4
1.5.1 构件 4
1.5.3 容器 5
1.5.2 基本构件工具 5
1.5.4 布局管理器 7
1.6 小结 7
第2章 applet和应用程序 8
2.1 Java applet 8
2.1.1 使用appletviewer 8
2.1.2 浏览器的基础结构 9
2.1.3 java.awt.Applet类 9
2.1.4 关键Applet方法 9
2.1.5 java.awt.Component显示方法 11
2.2 Java应用程序 11
2.2.1 设置应用程序 12
2.2.2 显示应用程序 13
2.3 组合Applet和应用程序代码 13
2.4 小结 15
第3章 图形 17
3.1 java.awt.Graphics 17
第二部分 图形和图像 17
3.2 Graphics参数 18
3.3 图形坐标系 20
3.3.1 绘制图形形状 20
3.3.2 绘制构件的四周边界 22
3.3.3 填充形状 22
3.4 Graphics引用 23
3.4.1 引用副本的Graphics引用 23
3.4.2 Graphics引用的寿命 25
3.4.3 处理Graphics 26
3.5.1 画直线 27
3.5 绘制和填充形状 27
3.5.2 画折线 28
3.5.3 绘制矩形 29
3.5.4 画弧 33
3.5.5 绘制椭圆 35
3.5.6 绘制多边形 35
3.5.7 绘制文本 35
3.6 转换坐标系原点 36
3.7 剪贴 40
3.8 图形模式 42
3.9 创建图形 45
3.10 小结 48
4.1.1 索引颜色模式 50
第4章 颜色和字体 50
4.1 颜色模式 50
4.1.2 直接颜色模式 54
4.2 java.awt.Color类 56
4.3 系统颜色 58
4.4 字体和字体度量 60
4.4.1 Font类 60
4.4.2 FontMetrics类 62
4.5 小结 68
第5章 加载和显示图像 70
5.1 Image类和Image包 70
5.2.2 ImageProducer 71
5.2.1 异步图像生产 71
5.2 图像生产者和图像消费者 71
5.2.3 ImageObserver 72
5.3 加载和显示图像 72
5.4 applet和应用程序之间的区别 75
5.5 等待图像加载 77
5.6 一次绘制图像的一行扫描线 78
5.7 MediaTracker 80
5.8 动画GIF 82
5.9 AWT构件作为图像观察者 85
5.10 创建图像 86
5.11 加载图像作为资源 87
5.12 小结 88
6.1 ImageProducer接口 89
第6章 图像过滤 89
6.2 ImageConsumer接口 90
6.3 图像生产者和图像消费者之间的关系 91
6.4 AWT图像过滤器 91
6.4.1 CropImageFilter 92
6.4.2 使用常规图像过滤器 94
6.4.3 ReplicateScaleFilter和AreaAveraging ScaleFilter 94
6.4.4 组合图像过滤器 96
6.5 ImageConsumer属性 98
6.6 实现自定义图像过滤器 99
6.7 扩展RGBImageFilter 100
6.7.1 DissolveFilter 100
6.7.2 DissolveEdgeFilter 103
6.8 扩展ImageFilter 105
6.8.1 ImageFilter类 106
6.8.2 向图像过滤器传输图像位 107
6.8.3 用于传输像素的ColorModel 108
6.8.4 扩展ImageFilter的溶解过滤器 109
6.8.5 波形过滤器 113
6.9 实现ImageConsurner接口 119
6.9.1 图像溶解 119
6.9.2 Dissolver类的实现 123
6.10 双缓冲入门 128
6.11 小结 133
第7章 无过滤图像处理 134
7.1 缩放和闪烁图像 134
7.2 抓取像素 137
7.3 内存图像源 140
7.3.1 使用MemoryImageSource裁剪图像 141
7.3.2 内存图像源和动画 142
7.4 小结 151
第三部分 事件和布局管理器 153
第8章 基于继承的事件处理 153
8.1 旧AWT事件模型 153
8.1.1 覆盖事件处理方法 153
8.1.2 被传播的事件 154
8.1.3 事件类型常量 154
8.1.4 事件的向外传播 157
8.1.5 覆盖被传播的事件的处理 158
8.2 事件修饰常数 158
8.3 鼠标按钮事件 159
8.4 关于鼠标和按钮 160
8.5 监控鼠标事件 161
8.6 检测双击 163
8.7 动作事件 164
8.8 标识构件 166
8.9 基于继承的事件模型的缺点 168
8.9.1 事件的传播 168
8.9.2 继承的要求 170
8.9.3 将事件处理插入到构件类中 170
8.9.4 传送事件的责任 170
8.9.5 handleEvemt()转换语句 170
8.10 小结 171
9.1.1 构件、事件和监听者 172
第9章 授权事件模型 172
9.1 授权事件模型 172
9.1.2 过滤事件 174
9.2 结构概述 174
9.2.1 事件 176
9.2.2 构件作为事件源 178
9.2.3 多点传送事件源 179
9.2.4 单点传送事件源 179
9.2.5 事件源接口 179
9.2.6 监听者 179
9.2.7 事件处理方法的JavaBeans设计模式 181
9.3 AWT适配器 181
9.4.1 构件和容器事件 183
9.4 构件事件 183
9.4.2 焦点事件 185
9.4.3 键盘事件 187
9.4.4 鼠标和鼠标移动事件 190
9.4.5 窗口事件 192
9.4.6 画布和面板的焦点和键盘事件 193
9.4.7 消耗输入事件 194
9.4.8 绘制事件 195
9.5 语义事件 195
9.5.1 动作事件 196
9.5.2 可调事件 197
9.5.3 项目事件 200
9.5.4 文本事件 201
9.6 事件适配器 202
9.6.1 处理没有适配器的多点事件源事件 203
9.6.2 类型安全的多路处理适配器 206
9.6.3 一般的多路处理适配器 208
9.7 内部类 211
9.7.1 三维按钮 212
9.7.2 在单独的监听者类中封装事件处理代码 213
9.7.3 监听自己 215
9.7.4 命名内部类 215
9.7.5 匿名内部类 216
9.7.6 修改默认的事件处理行为 217
9.8 从自定义构件中激发AWT事件 218
9.9.1 一个未经专门设计的方案 220
9.9 从自定义构件中激发自定义事件 220
9.9.2 有关步骤 221
9.9.3 开发自定义事件类 221
9.9.4 开发监听者接口 223
9.9.5 为注册监听者定义接口 223
9.9.6 开发可以激发自定义事件的自定义构件 224
9.10 调度事件和AWT事件队列 228
9.11 有效事件 230
9.12 基于继承的机制 232
9.13 事件处理设计 235
9.13.1 使用基于继承的事件模型 236
9.13.2 监听自己 236
9.13.3 在单独的类中封装事件处理代码 237
9.13.6 向容器传播事件 238
9.13.5 命名内部类与匿名内部类相比 238
9.13.4 使用内部类 238
9.14 小结 239
第10章 构件、容器和布局管理器 240
10.1 最大的三种AWT构件 240
10.2 布局管理器 241
10.2.1 两种类型的布局管理器 242
10.2.2 布局管理器和容器空白区 243
10.2.3 同位体和空白区 244
10.2.4 布局管理器和构件首选尺寸 245
10.3 绘制一个容器的构件 245
10.4 强制一个容器布置它的构件 248
10.5 标准AWT布局管理器 252
10.5.1 使用何种布局管理器 253
10.5.2 BorderLayout布局管理器 254
10.5.3 CardLayout布局管理器 255
10.5.4 FlowLayout布局管理器 257
10.5.5 CridLayout布局管理器 259
10.6 GridBagLayout布局管理器 260
10.6.1 GrdBaglayout和GridBag Constraints 261
10.6.2 网格单元和显示区 263
10.6.3 与构件比较的显示区 263
10.6.4 GridBagConstraints.anchor 264
10.6.5 GridBagConstraints.fill 266
10.6.6 GridBagConstraints.gridx和GridBagConstraints.gridy 266
10.6.7 GridBagConstraints.gridwidth和GridBagConstraints.gridheight 268
10.6.8 GridBagConstraints.weightx和GridBagConstraints.weighty 269
10.6.10 GridBagConstraints.ipadx和GridBagConstraints.ipady 272
10.6.9 GridBagConstraints.insets 272
10.6.11 GridBagLap 274
10.6.12 GridBagLayout和输入表单 274
10.6.13 在嵌套的面板中布置构件 278
10.6.14 嵌套面板之间的通信 281
10.6.15 GridLabApplet的实现 282
10.7 null布局管理器 285
10.8 自定义布局管理器 290
10.8.1 BulletinLayout 290
10.8.2 运行BulletinLayout自定义布局管理器 293
10.8.3 RowLayout 296
10.8.4 运行RowLayout自定义布局管理器 302
10.8.5 RowLayoutApplet的实现 306
10.8.6 ColurnnLayout 308
10.8.7 运行ColumnLayout自定义布局管理器 311
10.9 小结 314
第四部分 AWT构件 315
第11章 AWT Component类 315
11.1构件 315
11.2 java.awt.Component 316
11.3 构件属性 316
11.4 不赞成的方法 317
11.7 构件的可见性和响应 320
11.8 构件和同位体 320
11.6构件的首选、最小和最大尺寸 320
11.5 构件的位置、边界和坐标 320
11.9 显示构件 323
11.10 构件和zorder 324
11.11 构件和光标 326
11.12 构件和串行化 330
11.13 构件和国际化 333
11.13.1 Locale 333
11.13.2 资源包 334
11.13.3 SimpleI18Ntest applet 335
11.13.4 资源包属性 338
11.13.5 从国际化代码中分离出GUI 338
11.14.1 约束属性 339
11.14 构件和JavaBeans 339
11.13.6 可用地区和两个字符的编码 339
11.14.2 在自定义构件中实现约束属性 342
11.15 构件和树锁定 344
11.16 小结 348
第12章 基本构件:标签、按钮、画布和面板 349
12.1 标签和按钮 349
12.1.1 java.awt.Label 349
12.1.2 java.awt.Button 352
12.2 画面和面板 353
12.2.1 java.awt.Canvas 354
12.2.2 java.awt.Panel 355
12.3 小结 357
13.1.3 相容的复选框 358
13.1.2 java.awt.Checkbox 358
13.1.1 java.awt.ItemSelectable接口 358
第13章 项目选择:复选框、选择框和列表 358
13.1 复选框 358
13.1.4 相互排斥的复选框 360
13.2 选择框和列表 362
13.2.1 是采用列表还是选择框 362
13.2.2 java.awt.Choice 363
13.2.3 java.awt.List 369
13.2.4 双列表构件 372
13.3 小结 380
第14章 文本构件 381
14.1 java.awt.TextComponent 381
14.1.1 文本选择 382
14.2 java.awt.TextField 383
14.1.2 TextComponent监听者 383
14.2.1 输入的有效性 384
14.2.2 退出有效性 384
14.2.3 过程中确认 386
14.3 java.awt.TextArea 387
14.4 小结 391
第15章 滚动:滚动条与滚动框 392
15.1 java.awt.Scrollbar 392
15.2 java.awt.ScrollPane 403
15.2.1 滚动构件 403
15.2.2 滚动图像 407
15.2.3 程序控制滚动 411
15.3 小结 415
第16章 窗口、框架与对话框 416
16.1 java.awt.Window 417
16.1.1 快闪屏 418
16.1.2 提示框帮助 421
16.2 java.awt.Frame 424
16.3 java.awt.Dialog 426
16.3.1 模式对话框与多线程 429
16.3.2 java.awt.FileDialog 432
16.4 小结 436
第17章 菜单 437
17.1 菜单类 437
17.2 文件菜单 438
17.3 处理菜单事件 439
17.4 拖离菜单 441
17.5 MenuBar Printer 441
17.6 FrameWithMenuBar类 442
17.7 帮助菜单 445
17.8 复选框菜单项 448
17.9 级联菜单 450
17.10 动态更改菜单 452
17.11 弹出式菜单 456
17.11.1 弹出式菜单与构件 456
17.11.2 处理弹出式菜单事件 458
17.11.3 显示与构件相关的弹出式菜单 460
17.12 小结 462
18.2 键盘遍历 463
18.2.1 标准AWT构件与键盘遍历 463
第18章 无鼠标操作与打印 463
18.1 无鼠标操作 463
18.2.2 自定义构件及其键盘遍历 466
18.3 菜单快捷键 470
18.3.1 菜单类与快捷键 471
18.3.2 菜单快捷键示例 471
18.4 打印 473
18.4.1 获取PrintGraphics的引用 474
18.4.2 打印自身的applet 474
18.4.3 打印对话框及其属性 476
18.4.4 页码设置 478
18.5 小结 478
19.1.1 AWT:重量构件的世界 479
19.1.2 轻量构件与重量构件 479
19.1 引人轻量构件 479
第19章 轻量构件 479
19.2 简单的轻量构件 480
19.2.1 简单的重量构件 480
19.2.2 从重量构件到轻量构件 481
19.3 轻量容器 483
19.4 轻量构件与zorder 485
19.5 轻量构件及其Graphics 487
19.6 轻量构件与首选尺寸 489
19.7 小结 489
第五部分 高级主题 491
第20章 剪贴板与数据传输 491
20.1 java.awt.datatransfer软件包 491
20.2.2 ClipboardOwner类 492
20.2 Clipboard类 492
20.2.1 将数据复制到剪贴板及从剪贴板取出数据 492
20.3 系统剪贴板 493
20.4 局部剪贴板 497
20.5 数据传送机制 497
20.5.1 数据格式 497
20.5.2 Transferable对象与数据格式 498
20.5.3 StringSelection 499
20.6 将图像复制到剪贴板 500
20.6.1 ImageSelection--封装图像的Transferable对象 500
20.6.2 使用ImageSelection类 502
20.6.3 增加另外一种数据格式 507
20.7.1 封装自定义AWT构件的可传递对象 511
20.7 传递自定义AWT构件 511
20.7.2 图像按钮传送applet 512
20.8 小结 515
第21章 拖放技术 516
21.1 java.awt.dnd软件包 516
21.2 拖动源与放置目标 517
21.2.1 简单的拖放程序范例 517
21.2.2 拖动意图 523
21.2.3 拖动源 524
21.2.4 放置目标 525
21.2.5 事件 526
21.2.6 DragSourceDragEvent与DragSource DropEvent 526
21.2.7 DropTargetDragEvent与DropTarget DropEvent 527
21.2.9 继承与授权 528
21.2.8 特定的拖动源与放置目标 528
21.2.10 映射 532
21.2.11 自动滚动 539
21.3 小结 545
第22章 自定义对话框 546
22.1 对话框类 546
22.1.1 GJTDialog 546
22.1.2 非模式对话框和DialogClient接口 547
22.1.3 再论GJTDialog 548
22.2 WorkDialog 552
22.3 ButtonPanel 553
22.4 Postcard 555
22.5 MessageDialog 556
22.6 YesNoDialog 560
22.7 QuestionDialog 564
22.8 小结 569
第23章 橡皮带技术 570
23.1 橡皮带类 570
23.2 Rubberband基本类 571
23.2.1 Rubberband方法及类成员 571
23.2.2 以XOR模式绘图 573
23.2.3 绘制橡皮带线条 577
23.2.4 绘制橡皮带矩形与椭圆形 578
23.3 橡皮带面板 579
23.4 使用DrawingPanel类 583
23.5 重分解单元测试 587
23.6 小结 588
24.2 双缓冲如何工作 589
第24章 双缓冲技术 589
24.1 双缓冲技术与动画 589
24.3 可拖动轻量构件与双缓冲容器 591
24.3.1 Util类 592
24.3.2 BackingStore类 594
24.3.3 DoubleBufferedContainer类 597
24.3.4 Lightweight类 605
24.4 小结 608
第25章 子图形动画 609
25.1 构成 609
25.2 序列与子图形 609
25.2.1 Sequence 609
25.2.2 子图形 613
25.3 Playfield与DoubleBufferedContainer 618
25.4 冲突检测 622
25.4.1 CollisionArena 622
25.4.2 CollisionDetector 623
25.4.3 SpriteCollisionDetector 623
25.4.4 EdgeCollision 624
25.5 使用animation软件包 625
25.5.1 简单的动画 625
25.5.2 碰撞动画 628
25.53 两个子图形之间的冲突 631
25.6 小结 634
附录A AWT类框图 635
附录B 关于本书的CD-ROM 637