第1部分 JavaBean组件基础 3
第1章 基于组件的软件开发 3
1.1 现代软件工业面临的问题 3
1.2 Java革命 4
1.2.1 Java的平台独立性 4
1.2.2 Java很强大 5
1.2.3 Java很简单 5
1.2.4 Java适用于Internet编程 5
1.3.1 基于组件行业的特征 6
1.3 基于组件的软件开发 6
1.3.2 通用软件组件 7
1.4 通用软件组件基础 7
1.4.1 可视化和非可视化组件 8
1.4.2 非可视化组件 9
1.4.3 软件构造块 9
1.4.4 组件模型 9
1.5 小结 14
第2章 JavaBean概述 15
2.1 JavaBean的任务 15
2.2.1 简单性和紧凑性 16
2.2.2 可移植性 16
2.2 JavaBean如何实现其设计目标 16
2.2.3 以Java为依托 17
2.2.4 应用程序构造器支持 17
2.2.5 分布式计算支持 17
2.3 JavaBean与Java 17
2.4 JavaBean的基本概念 18
2.4.1 JavaBean到底是什么 18
2.4.2 属性、事件和方法 19
2.4.3 设计环境和运行环境 20
2.4.4 安全性问题 21
2.4.5 本地活动 21
2.4.7 非可视化JavaBean组件 22
2.4.6 连接到远程状态的JavaBean组件 22
2.4.8 多线程 23
2.4.9 国际化 23
2.5 统一数据传送(UDT) 24
2.6 对JavaBean组件的3种观点 24
2.6.1 JavaBean组件实现者 25
2.6.2 应用程序开发者 25
2.6.3 最终用户 26
2.7 JavaBean的使用方案 26
2.7.1 在应用程序构造器工具中使用bean 26
2.7.2 在手工编写的代码中使用bean 29
2.8 小结 32
3.1 属性管理 33
第3章 JavaBean API概述 33
3.1.1 访问者(accessor)方法 34
3.1.2 索引属性 34
3.1.3 关联属性和限制属性 34
3.2 自检 34
3.2.1 反射(reflection)和设计模式 35
3.2.2 显式bean信息 35
3.3 事件处理 36
3.3.1 单目(unicast)事件源和多目(multicast)事件源 36
3.2.3 自检器 36
3.3.2 事件适配器 37
3.4 持久性 37
3.5 应用程序构造工具 37
3.5.1 属性编辑器(editor)和属性单(sheet) 38
3.5.2 定制器(customizer) 38
3.6 java.beans包 38
3.7 小结 41
第4章 测试JavaBean的BeanBox容器 42
4.1 安装JDK和BDK 42
4.2 启动BeanBox 43
4.3.2 在BeanBox窗口中选择一个bean 46
4.3 使用BeanBox 46
4.3.1 向BeanBox窗口中添加一个bean 46
4.3.3 移动bean和调整bean的尺寸 47
4.3.4 编辑一个bean的属性 47
4.3.5 使用bean的定制器 47
4.3.6 连接一个事件句柄 47
4.3.7 连接一个关联属性 48
4.3.8 存储和恢复bean 48
4.3.9 获得关于一个bean的自检报告 48
4.3.10 在BeanBox中添加自己创建的bean 48
4.4.1 BeanBox bean 49
4.4 BDK提供的示例bean 49
4.4.2 BridgeTester bean 50
4.4.3 ChangeReporter bean 50
4.4.4 EventMonitor bean 50
4.4.5 JDBC SELECT bean 52
4.4.6 JellyBean bean 52
4.4.7 Juggler bean 52
4.4.8 Molecule bean 53
4.4.9 QuoteMonitor bean 54
4.4.10 SorterBean 54
4.4.11 TickTock bean 54
4.4.12 Voter bean 55
4.4.13 OurButton bean 56
4.4.14 ExplicitButton bean 57
4.4.15 OrangeButton bean 57
4.5 演示示例bean 58
4.6 小结 60
第5章 使用BeanBox创建和测试bean 61
5.1 创建和测试简单的bean 61
5.1.1 创建一个简单的bean 61
5.1.2 检验SimpleBean组件的属性和事件 63
5.1.3 产生bean自检报告 64
5.1.4 SimpleBean的makefile文件 65
5.2 使用BeanBox实现属性 67
5.3 在BeanBox中处理事件 69
5.3.1 BeanBox是如何发现bean的事件功能的 70
5.3.2 在BeanBox中查看bean的事件 73
5.3.3 在BeanBox中连接事件 73
5.3.4 事件适配器类 73
5.3.5 BeanBox提供的EventMonitor演示bean 74
5.4 使用BeanBox产生Applet 75
5.5 小结 76
6.1 属性基础 79
第6章 JavaBean属性 79
第2部分 JravaBean组件规范和API支持 79
6.2 访问者方法 81
6.2.1 getter和setter方法 81
6.2.2 使用访问者方法 81
6.3 JavaBean属性类别 82
6.3.1 单值属性 82
6.3.2 索引属性 83
6.3.3 关联属性 84
6.3.4 限制属性 85
6.4 属性的JavaBean API支持 86
6.4.1 PropertyChangeEvent类 87
6.4.2 PropertyChangeSupport类 88
6.4.3 PropertyVetoException异常 90
6.4.4 VetoableChangeSupport类 90
6.4.5 PropertyChangeListener接口 92
6.4.6 VetoableChangeListener接口 92
6.5 小结 93
第7章 使用JavaBean属性 94
7.1 使用属性 94
7.1.1 在脚本环境中使用属性 94
7.1.3 可视化地使用属性 95
7.1.4 属性和bean的持久性 95
7.1.2 编程中使用属性 95
7.2 实现简单属性 96
7.3 实现索引属性 96
7.3.1 实现基本的索引属性 97
7.3.2 OurListBox示例bean 98
7.3.3 索引属性编辑器 99
7.4 实现关联属性 100
7.4.1 实现和测试基本的关联属性 101
7.4.2 关联属性的事件机制 102
7.4.3 源bean中实现关联属性支持 103
7.4.4 实现关联属性监听器 104
7.4.5 BeanBox中的关联属性 105
7.5 实现限制属性 107
7.5.1 源bean中实现限制属性支持 107
7.5.2 实现限制属性监听器 110
7.5.3 BeanBox中的限制属性 111
7.5.4 限制属性设计模式小结 112
7.6 小结 113
第8章 JDK 1.1事件模型 114
8.1 JDK1.0事件模型 114
8.1.1 JDK1.0事件模型的概况 114
8.1.2 JDK1.0事件模型中的问题 115
8.2 JDK1.1事件模型中的相关对象 118
8.3 java.awt.event包 121
8.3.1 监听器接口 122
8.3.2 AWTEvent子类 124
8.3.3 适配器类 127
8.4 单目事件源和多目事件源 130
8.5 小结 132
第9章 处理JavaBean事件 133
9.1 JavaBean事件基础 133
9.2 事件状态对象 134
9.3 事件监听器 135
9.4 事件源 136
9.5 事件适配器 137
9.6 事件分发 138
9.7 JavaBean事件实用程序举例 139
9.7.1 WaterEventObject对象 140
9.7.2 WaterListener监听器接口 140
9.7.3 WaterSource bean类 141
9.7.4 Valve bean类 142
9.7.5 Pipe bean类 144
9.7.6 测试WaterSource、Valve和Pipe bean 145
9.8 JavaBean事件的API支持 146
9.8.1 EventObject类 146
9.9 小结 147
9.8.2 EventListener接口 147
第10章 Java核心反射和JavaBean自检 148
10.1 Java核心反射概述 148
10.2 Java核心反射的应用程序接口 149
10.2.1 java.lang.reflect程序包 149
10.2.2 java.lang.Class类 154
10.3 JavaBean自检基础 155
10.4 自检的作用 156
10.5 设计模式 157
10.5.1 属性设计模式 157
10.5.2 事件设计模式 159
10.5.3 方法设计模式 160
10.5.4 Java核心反射与设计模式 160
10.6 显式地提供bean自检信息 160
10.7 使用BeanInfo提供显式信息 161
10.7.1 创建一个BeanInfo类 162
10.7.2 使用BeanInfo控制bean表现的特征 165
10.7.3 特征描述器 166
10.8 自检器 166
10.9 自检和安全性 166
10.10 小结 167
11.1 BeanDescriptor类 168
第11章 JavaBean自检的API支持 168
11.2 EventSetDescriptor类 169
11.3 FeatureDescriptor类 173
11.4 IndexedPropertyDescriptor类 176
11.5 IntrospectionException异常 179
11.6 Introspector类 179
11.7 MethodDescriptor类 182
11.8 ParameterDescriptor类 183
11.9 PropertyDescriptor类 184
11.10 SimpleBeanInfo类 187
11.11 BeanInfo接口 189
11.12 小结 192
第12章 JavaBean持久性 193
12.1 持久性基础 193
12.2 需要持久存储的信息 194
12.3 持久存储的场所 196
12.4 持久性混合处理方法 196
12.5 对象序列化 196
12.6 控制序列化过程 199
12.6.1 默认序列化:实现Serializable接口 199
12.6.2 使用transient关键字有选择地序列化 200
12.6.3 使用writeObject()和readObject()方法定制序列化 203
12.6.4 实现自己的序列化:Externalizable接口 205
12.7 版本化(versioning) 208
12.8 使用JavaBean持久性的一些原则 209
12.9 JavaBean持久性的API支持 210
12.9.1 DataOutput接口 210
12.9.2 DataInput接口 211
12.9 ObjectOutput接口 211
12.9.4 ObjectInput接口 212
12.9.5 ObjectOutputStream类 212
12.9.6 ObjectInputStream类 213
12.10 小结 214
13.1 定制基础 215
第13章 JavaBean定制 215
13.1.1 Bean开发与Java类开发 216
13.1.2 运行环境和设计环境分布 216
13.2 属性编辑器 217
13.3 使用属性编辑器 219
13.3.1 颜色属性编辑器 219
13.3.2 BDK的属性编辑器 224
13.4 属性单 225
13.5 定制器 227
13.5.1 GUI外观 227
13.6 使用定制器 228
13.5.2 本地更新 228
13.5.3 定位定制器 228
13.6.1 定制器(customizer)接口 229
13.6.2 PropertyEditor接口 229
13.6.3 BeannInfo接口 229
13.6.4 OurButton示例bean的定制器 230
13.7 定制的API支持 232
13.7.1 Customizer接口 232
13.7.2 PropertyEditor接口 233
13.7.3 PropertyEditorManager类 236
13.7.4 PropertyEditorSupport类 238
13.8 小结 239
第3部分 JavaBean应用 243
第14章 使用Java Studio开发JavaBean 243
14.1 常用JavaBean开发工具 243
14.1.1 Borland公司的JBuilder 243
14.1.2 Penumbra Software的Mojo 244
14.1.3 IBM公司的Visual Age for Java 244
14.1.4 SunSoft公司的Java Studio 244
14.1.5 SunSoft公司的Java Workshop 245
14.1.6 Symantec的Visual Cafe 245
14.2 Java Studio简介 245
14.3.1 Java Studio主窗口 246
14.3 启动Java Studio 246
14.3.2 Java Studio的GUI窗口 249
14.3.3 Java Studio的Design窗口 250
14.4 定制调色板 251
14.5 创建Java Studio的Design 252
14.6 使用Design创建JavaBean 256
14.7 引入JavaBean组件 258
14.8 使用Java Studio开发JavaBean组件 264
14.8.1 开发JavaBean组件的步骤 265
14.8.2 创建设计环境信息 267
14.8.3 创建一个定制器 269
14.8.4 包装Java Studio的组件 270
14.9 小结 270
第15章 编写简单的JavaBean 272
15.1 创建一个最简单的bean(第1个例子) 272
15.2 有颜色属性的bean(第2个例子) 274
15.3 bean和包(packages)(第3个例子) 276
15.4 有标签(label)属性的bean(第4个例子) 277
15.5 自动调整bean的尺寸(第5个例子) 280
15.6 bean的事件句柄(第6个例子) 285
15.7 从bean触发事件(第7个例子) 288
15.8 创建形象化的bean按钮(第8个例子) 295
15.9 小结 299
第16章 定制一个按钮bean 301
16.1 设计按钮bean 301
16.1.1 属性 302
16.1.2 方法 302
16.1.3 事件 303
16.2 开发按钮bean 303
16.2.1 属性和成员变量 304
16.2.2 构造函数 304
16.2.3 访问者方法 305
16.2.4 公有方法 306
16.2.5 事件注册方法 307
16.2.6 事件处理方法 308
16.2.7 内部支持方法 311
16.2.8 编写按钮bean的BeanInfo类和manifest文件 317
16.3 测试按钮bean 319
16.4 如何增强按钮bean的功能 320
16.5 小结 321
第17章 定制一个计量条bean 322
17.1 设计计量条bean 322
17.1.1 属性 323
17.1.2 方法 323
17.2.1 属性和成员变量 324
17.1.3 事件 324
17.2 开发计量条bean的源代码 324
17.2.2 构造函数 328
17.2.3 访问者方法 329
17.2.4 公有方法 330
17.2.5 编写计量条bean的BeanInfo类和manifest文件 335
17.2.6 测试计量条bean 337
17.3 增强计量条bean的功能 338
17.4 小结 339
18.1 创建一个广告牌bean 340
18.1.1 创建基本的bean类 340
第18章 JavaBean应用程序举例(上) 340
18.1.2 创建测试bean的applet和HTML文件 342
18.1.3 测试bean 342
18.2 定制可滚动的广告牌bean 343
18.2.1 创建bean的类文件 343
18.2.2 创建bean的事件类 348
18.2.3 创建bean的监听器类 349
18.2.4 创建测试bean的applet和HTML文件 349
18.2.5 测试bean 351
18.3 检查bean的特征 352
18.3.1 创建bean的类文件 352
18.3.2 创建bean的测试框架 355
18.3.3 运行测试框架显示bean 357
18.4 包装创建的Secondbean 360
18.4.1 创建BeanInfo类 361
18.4.2 创建bean的manifest文件 362
18.4.3 测试bean 362
18.5 小结 364
第19章 JavaBean应用程序举例(下) 366
19.1 创建使用资源文件的bean 366
19.1.1 创建bean类文件 366
19.1.2 创建资源文件测试bean 369
19.2 为bean添加定制器 370
19.2.1 创建定制器类 371
19.2.2 修改BeanInfo类 374
19.2.3 创建测试框架 374
19.2.4 使用框架测试bean 380
19.3 核心反射API检查JavaBean 381
19.3.1 编写bean的类文件 381
19.3.2 测试bean 386
19.4 小结 387
附录A 术语表 389
附录B JavaBean在线资源 394
附录C JavaBean API类库清单 397