2008年(3500)
分类:
2008-05-04 19:14:33
教 学 纲 要
在 复杂 的 窗 口 结 构 里 , 事 件 发 生 以 后 , 该 由 谁 来 处 理 呢 ?
我 们 使 用 组 件 和 组 件 容 器 的 概 念 来 设 计 程 序 , 使 得 窗 口程 序 的 结 构 变 得 很 复 杂 , 有 很 多 的 层 次 。 很 可 能 设 计 出这 样 的 程 序 : 一 个 组 件 容 器 里 保 护 了 几 个 组 件 和 几 个 组件 容 器 , 而 这 些 组 件 容 器 有 的 包 含 一 些 组 件 , 有 的 又 包含 了 几 个 组 件 和 几 个 组 件 容 器 , 层 层 相 套 , 好 像 如 下 的形 式 :
( 图中 圆 圈 表 示 组 件 容 器 , 方 框 表 示 组 件 。 )
那 么, 在 如 此 复 杂 的 窗 口 结 构 里 , 事 件 发 生 以 后 , 该 由 谁 来处 理 呢 ?
原 来, 当 事 件 发 生 的 时 候 , 会 首 先 交 给 最 内 层 的 窗 口 对 象 来处 理 。 如 果 该 窗 口 对 象 的 事 件 处 理 程 序 的 返 回 值 是 false 的 话 , 那 么 这 个 事 件 就 会 被 传 递 给 包 含 该 窗 口 对 象 的 组件 容 器 来 处 理 , 这 样 一 级 一 级 地 往 上 传 递 。 直 到 有 一 个窗 口 对 象 的 事 件 处 理 程 序 返 回 值 为 true 为 止 。
所 以, 在 我 们 自 己 所 写 的 事 件 处 理 程 序 当 中 , 如 果 处 理 了 某个 事 件 , 则 应 置 返 回 值 为 true , 如 果 没 有 处 理 , 则 应 设置 返 回 值 为 false , 以 便 将 事 件 传 递 到 上 一 级 去 。
所 有由 组 件 发 出 的 事 件 , 像 由 输 入 设 备 发 出 的 事 件 一 样 , 都会 交 给 方 法 handleEvent 去 处 理 , 而 在 原 来 的 方 法 handleEvent 中 , 又 会 转 而 调 用 方 法 action 来 处 理 这 些 由 组 件 发 出 的 事件 。
因 此, 通 常 的 情 况 下 , 我 们 会 自 己 写 一 段 方 法 action 程 序 来 处理 组 件 发 出 的 事 件 。
方 法 action 的 用 法 如 下 所 示 :
public boolean action( 参 数 1 , 参 数 2 )
{
… …
}
方 法的
方 法 action 被 调 用 时 , 可 能 是 任 何 一 个 组 件 发 生 了 ACTION_EVENT 事 件 , 所 以 在 方 法 action 的 一 开 始 应 先 检 查 是 哪 一 个 组 件发 生 了 事 件 , 如 果 不 是 我 们 所 关 心 的 那 个 组 件 发 生 了 事件 , 就 不 去 理 睬 它 。
程 序流 程 分 析 :
1. 在这 个 程 序 里 使 用 了 类 Label 、 类 Botton 和 类 Event
, 为 了 书 写简 便 使 用 了 通 配 符 * , 表 示 把 所 有 前 9 个 字 符 为 “ java.awt. ”
的 类 import 进 来 。
2. 构造 Applet 程 序 类 window1 。
3. 写初 始 化 程 序 :
4. 写 事 件 处 理 程 序 :
下载本文示例代码