亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

事件監聽器: 將JavaBeans接通起來的方法

2019-11-18 12:05:07
字體:
來源:轉載
供稿:網友

  通 過 適 當 配 置,javaBeans 能 夠 去" 監 聽" 其 它 軟 件 對 象。 而 且 正 如 你 將 要 看 到 的 一 樣, 一 個Java1。1 類( 包 括 任 何 一 個JavaBeans) 一 旦 成 為 一 個 事 件 監 聽 者, 就 不 僅 僅 只 能 夠 監 聽 其 父 類, 而 且 能 夠 監 聽 所 有 產 生 事 件 的 類。 事 件 監 聽 者 的 思 想 正 是Java 類( 和 其 它JavaBeans) 如 何 處 理 事 件 的 關 鍵。
  
  我 先 來 介 紹 兩 個 圖 標, 它 們 將 幫 助 我 們 識 別 一 些 關 鍵 問 題。
  
  JavaBeans 是 一 個 重 要 概 念
  Cuppajoe 圖 標 表 示 對 于Java 語 言 來 說 新 的 或 重 要 的 思 想
  
  什 么 是 事 件
  軟 件 事 件 是 一 段 說 明 某 事 已 經 發 生 的 數 據。 用 戶 移 動 鼠 標, 或 從 網 上 傳 來 數 據 報, 或 傳 感 器 監 測 到 某 人 非 正 常 介 入, 所 有 這 些 發 生 的 情 況, 都 可 以 被 看 成 是 事 件 的 實 例, 而 有 關 這 些 情 況 的 信 息 可 以 包 括 在 事 件 之 中。 通 常 情 況 下, 根 據 事 件 處 理 來 開 發 軟 件 系 統 是 較 為 方 便 的: 在 此 情 況 下, 程 序 設 計 變 成 一 種 對" 當 此 發 生 時, 做 彼" 式 的 敘 述 進 行 加 工 處 理 的 過 程。 如 果 鼠 標 已 被 移 動, 則 隨 之 移 動 屏 幕 上 的 光 標; 如 果 網 上 傳 來 數 據 報, 則 讀 之; 如 果 發 現 有 人 侵 入, 則 驅 逐 之。
  
  通 常 而 言, 一 個 事 件 包 括 以 下 信 息: 事 件 源( 產 生 事 件 或 最 初 接 收 到 事 件 的 對 象), 事 件 的 發 生 時 刻, 和 一 些 事 件 接 收 者 可 能 用 到 的 說 明 什 么 情 況 發 生, 如 何 去 做 的 子 類 的 具 體 信 息。 例 如, 在Windows 系 統 中, 就 應 當 有 一 個 關 于 點 擊 鼠 標 的 事 件 子 類。 點 擊 鼠 標 事 件 將 包 括 點 擊 鼠 標 時 的 時 刻; 也 可 能 包 括 當 點 擊 發 生 時, 鼠 標 在 屏 幕 上 的 位 置,SHIFT 鍵 和ALT 鍵 的 狀 態, 是 點 擊 了 鼠 標 左 鍵 還 是 右 鍵 等 等 諸 如 此 類 的 信 息。 處 理 事 件 的 編 碼, 不 可 思 議 地 被 稱 為" 事 件 處 理 者"(event handler)。
  
  那 么, 所 有 這 些 與JavaBeans 有 何 關 系 呢? 事 件 是Beans 相 互 通 訊 的 主 要 方 式。 這 點 我 們 在 下 面 將 會 看 到。 如 果 你 正 確 地 選 擇 了 事 件 和 它 們 的 連 接, 你 就 可 能 在 你 的 應 用 系 統 中 將Beans 相 互 接 通, 讓 每 一 個Beans 按 照 你 的 意 愿 去 響 應 與 其 相 關 的 事 件。 每 一 個Beans 將 各 負 其 責, 對 新 來 的 事 件 進 行 適 當 地 響 應, 并 且 當 新 的 情 況 出 現 的 時 候, 向 相 關 的 鄰 居Beans 發 送 新 的 事 件。 一 旦 你 知 道 如 何 利 用 事 件, 你 就 能 夠 寫 出 通 過 事 件 和 其 他 組 件 進 行 通 訊 的Beans。 更 進 一 步 地 講, 外 部 系 統, 例 如 集 成 開 發 環 境(IDEs) 能 夠 自 動 地 檢 測 你 的Beans 所 用 的 事 件, 并 能 讓 你 以 圖 解 的 方 式 來 互 連Beans。IDEs 同 樣 也 能 向JavaBeans 發 送 事 件 和 從JavaBeans 接 收 事 件, 本 質 上 講, 可 以 從 外 部 來 控 制JavaBeans。
  
  為 了 了 解 事 件 怎 樣 和Beans 一 起 工 作, 你 就 必 須 了 解 他 們 在Java 中 是 如 何 工 作 的。 而 事 件 工 作 的 方 式 各 不 相 同,JDK1。1 則 是 標 準 的。
  
  JDK 1。0 的 事 件 機 制 有 何 問 題?
  在JDK1。0 中, 事 件 主 要 被 用 在 抽 象 視 窗 工 具 包(AWT) 中, 當 在 用 戶 接 口 上 出 現 某 種 情 況 時, 它 將 通 知 相 應 的 類。 程 序 員 應 用 繼 承 機 制, 通 過 創 建 某 個 類 的 能 夠 接 收 相 應 的 事 件 類 型 的 子 類 對 象 和 重 載 父 類 的 事 件 處 理 過 程, 來 進 行 事 件 處 理。
  
  例 如, 在Java1.0 版 中, 能 夠 獲 得 某 個 行 為 事 件(action event) 的 唯 一 途 徑, 就 是 把 它 從 某 個 知 道 如 何 處 理 此 行 為 事 件 的 類 中 繼 承 下 來。
  
  public class MyButton extends java.awt.Button
  {
  //重載action()方法以處理行為事件
  public boolean action(Event evt, Object what)
  {
  //此處,做一些行為事件所做的事
  }
  }
  
  這 意 味 著, 只 有 從java。awt。button 中 繼 承 下 來 的 類 才 能 夠 響 應 點 擊 鼠 標 事 件。 這 種 組 織 結 構 與 用 戶 接 口 捆 綁 在 一 起, 不 夠 靈 活 方 便。 它 不 便 于 構 造 新 的 事 件 類 型。 而 且 即 便 你 能 夠 構 造 新 的 事 件, 你 也 很 難 改 變 那 些 將 被 類 響 應 的 事 件, 因 為 有 關 的 信 息 都 被 僵 硬 地 固 化 在AWT 的" 族 系 樹"( 繼 承 圖) 中。
  
  新 的JDK1。1 擁 有 一 個 更 為 普 適 的 事 件 框 架, 它 能 夠 讓 產 生 事 件 的 類 和 其 它 不 產 生 事 件 的 類 互 相 通 訊。 新 的 模 式 放 棄 了 定 義 客 戶 子 類 必 須 重 載 的 事 件 處 理 函 數( 方 法) 的 工 作 方 式, 轉 而 采 用 定 義 接 口 的 方 式。 如 果 一 個 類 需 要 接 收 某 一 特 定 的 消 息 類 型, 則 這 個 類 可 以 使 用 所 定 義 的 接 口。( 你 可 能 會 明 白, 這 意 味 著 通 過" 授 權"(delegation), 而 不 是 通 過" 繼 承"(inheritance) 來 處 理 事 件)。 我 們 將 還 以JDK1。0 button 例 子 來 說 明JDK1。1 的 模 式。
  
  我 在 此 想 要 做 的 事 是, 構 造 一 個 新 的 類, 使 它 能 夠 在 按 鈕 被 按 下 時, 去 做 某 件 事 情。 在JDK1。0 版 中, 為 了 處 理 與 按 鈕(Button) 行 為 相 關 的 事 件, 我 必 須 繼 承java。awt。Button, 這 樣, 一 旦 某 個 按 鈕 被 按 下 時, 該 按 鈕 將 會 讓 我 的 新 類 知 道。
  
  //...在程序的另一個地方,我們定義了"監聽"按鈕行為的對象
  ActionListener myActionListener = new ActionListener();
  //...
  
  //按鈕行為事件
  public class MyButton extends java.awt.Button
  {
  //重載action()以通知我的新類
  public boolean action(Event evt, Object object)
  {
  myActionListener.action(evt, object);
  }
  }
  
  現 在, 每 當MyButton 被 按 下 時,myActionListener 對 象 都 會 收 到 一 個 事 件。myActionListener 并 非 一 定 要 是java。awt。Component 的 一 個 子 類, 但 它 的 確 要 包 括 一 個action() 方 法。 我 們 把 這 個 新 類 稱 為ActionListener, 是 因 為 這 個 新 類 一 直 將 要" 監 聽" 它 所 依 附 的Botton 的 行 為 事 件。 在 此, 仍 有 一 些 問 題 存 在:
  
  當 按 下 此 按 鈕 時, 將 要 通 知 的 對 象 是 固 定 在 程 序 中 的, 這 就 是 說, 我 不 能 在 程 序 運 行 時 刻(runtime)" 重 新 接 通"Button 和myActionListener 的 關 系。
  
  僅 有 一 個 對 象 可 被 通 知 到; 如 果 其 它 幾 個 對 象 都 與 點 擊Button 有 關 系, 這 該 如 何 解 決?
  
  我 們 仍 然 沒 有 解 決 通 過" 繼 承" 來 接 收 按 鈕 行 為 事 件 的 難 題-- 這 就 是 說,myActionListener 仍 必 須 從 某 個" 了 解" 按 鈕 及 其 行 為 事 件 的 類 中 繼 承 下 來。
  對 第 一 個 問 題, 有 一 個 可 供 選 擇 的 辦 法 是 在MyBotton 類 中 增 加setListener(ActionListener newListener) 及myNewClass getListener() 兩 個 方 法, 和 一 種 能 更 換 被 通 知 的 對 象 的 途 徑。 然 而 非 常 不 幸, 我 們 仍 然 不 能 僅 僅 局 限 于 為 每 一 個 按 鈕 關 連 一 個 對 象, 因 而 下 面 你 將 看 到, 我 們 將 生 成 一 系 列 的 監 聽 器(listeners)。
  
  //按鈕行為事件( button action event)
  public class MyButton extends java.awt.Button
  {
  PRivate Vector listeningObjects = new Vector();
  
  //重載action()以通知我的新類
  public boolean action(Event evt, Object object)
  {
  for (int i = 0; i
  
  好 了 , 現 可 以 看 到 , 任 何 一 個ActionListener 的 實 例 都 可 以 通 過 調 用addActionListener(this)" 監 聽" 任 何 一 個Mybutton 實 例 上 的 事 件 , 并 且 通 過 調 用removeActionListener(this) 結 束" 監 聽"。 這 一 進 步 的 確 不 錯 , 但 是 有 關" 繼 承" 的 問 題 仍 然 困 繞 著 我 們: 只 有Button 和ActionListener 對 象( 及 其 派 生 類 對 象) 才 能 接 收 到Button 行 為 事 件。 對 此 ,Java 有 著 新 的 解 決 路 線: 接 口。
  
  接 口 和 事 件 監 聽 器
  在Java 術 語 表(http://Java。sun。com/docs/glossary。Html) 中 將 接 口 定 義 如 下:
  
  接 口(interface): 在Java 中 , 是 一 組 特 定 的 方 法 , 這 些 方 法 可 以 在 多 個 不 同 的 類 中 實 現 , 而 不 必 考 慮 這 些 類 在 類 系 結 構 中 的 等 級 關 系。
  
  為 什 么 它 會 如 此 有 用?
  接 口 定 度 了 一 “角 色”,通 過 實 現 這 一 接 口 中 的 一 系 列 操 作 , 每 一 個 類 都 可 以 扮 演 接 口 的 角 色 。
  
  接 口 的 定 義 和 類 的 定 義 看 起 十 分 相 似:
  
  // 仍 在JDK1.0 內
  public interface ActionListener
  {
  void action(Event evt, Object obj

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产毛片完整版| 8x拔播拔播x8国产精品| 亚洲欧美一区二区三区久久| 精品毛片三在线观看| 国产成人在线一区二区| 精品无人区乱码1区2区3区在线| 久热精品视频在线观看| 九九热99久久久国产盗摄| 欧美电影电视剧在线观看| 亚洲xxx视频| 97在线观看视频| 亚洲人精品午夜在线观看| 在线看欧美日韩| 国产精品99久久久久久久久久久久| 国产精品人成电影| 97久久超碰福利国产精品…| 国产一区私人高清影院| 成人黄色av播放免费| 久久好看免费视频| 亚洲激情电影中文字幕| 777精品视频| 亚洲日本aⅴ片在线观看香蕉| 欧美午夜女人视频在线| 亚洲欧美日韩中文在线制服| 久久人人爽人人| 777国产偷窥盗摄精品视频| 亚洲第一区在线观看| 欧美激情乱人伦| 久久久久成人网| 国产成人精品在线视频| 国模私拍一区二区三区| 欧美在线欧美在线| 国产精品主播视频| 日韩av免费在线| 91久久精品国产91久久性色| 亚洲日韩第一页| 在线午夜精品自拍| 久久99视频精品| 亚洲成人久久久久| 久久久免费观看视频| 一道本无吗dⅴd在线播放一区| 精品亚洲一区二区三区在线播放| 国产精品三级美女白浆呻吟| 国产日韩欧美中文在线播放| 亚洲欧美中文另类| 久久精品视频在线播放| 久久久精品999| 日韩在线小视频| 日韩av在线直播| 国产v综合v亚洲欧美久久| 日本久久久久久久久久久| 97精品国产97久久久久久免费| 欧美在线观看一区二区三区| 午夜欧美大片免费观看| 国产美女精品视频| 尤物九九久久国产精品的特点| 国产视频观看一区| 色悠悠久久久久| 欧美成人精品激情在线观看| 欧美日韩国产影院| 在线a欧美视频| 亚洲人成电影在线观看天堂色| 亚洲一区二区三区视频播放| 国产裸体写真av一区二区| 亚洲自拍偷拍网址| 26uuu另类亚洲欧美日本一| 97视频免费在线看| 国产精品老女人视频| 欧美电影免费观看电视剧大全| 成人激情在线观看| 91国内揄拍国内精品对白| 成人网在线免费看| 中文字幕欧美精品日韩中文字幕| 久久免费视频观看| 久久久精品欧美| 欧美黑人性视频| 国产精品亚洲自拍| 国产美女精彩久久| 亚洲欧美一区二区三区在线| 久久久免费av| 欧美又大粗又爽又黄大片视频| 欧美成人三级视频网站| 久久久久中文字幕2018| 国产日韩精品一区二区| 久久视频免费观看| 97国产精品视频人人做人人爱| 欧美成人中文字幕在线| 久久久久久这里只有精品| 国产精品入口免费视频一| 精品一区二区三区电影| 亚洲欧美另类在线观看| 日韩欧中文字幕| 亚洲精品电影网在线观看| 欧美限制级电影在线观看| 欧美—级高清免费播放| 成人av在线网址| 91精品国产综合久久香蕉的用户体验| 日韩激情av在线播放| 欧美日韩黄色大片| 92版电视剧仙鹤神针在线观看| 亚洲国产精品系列| 日本不卡高字幕在线2019| 美女久久久久久久| 一区二区欧美久久| 日本午夜人人精品| 日韩成人中文字幕在线观看| 亚洲综合视频1区| 欧美最顶级丰满的aⅴ艳星| 宅男66日本亚洲欧美视频| 欧美情侣性视频| 亚洲乱码av中文一区二区| 一区二区三区天堂av| 亚洲天堂av综合网| 成人在线国产精品| 欧美日韩一区二区免费视频| 日韩精品视频观看| 国产精品大陆在线观看| www.99久久热国产日韩欧美.com| 国产精品夜色7777狼人| 国产剧情久久久久久| 国产精品999| 伊人久久精品视频| 欧美丝袜一区二区三区| 国产精品jvid在线观看蜜臀| 久久久久999| 91在线视频成人| 77777亚洲午夜久久多人| 国产精品热视频| 亚洲精品日韩久久久| 精品福利一区二区| 精品国产成人av| 福利视频导航一区| 日韩精品中文字幕视频在线| 日韩视频在线观看免费| 91亚洲精品一区二区| 国产欧美日韩中文| 亚洲精品有码在线| 清纯唯美日韩制服另类| 国产精品久久久久久久久免费| 亚洲成人激情视频| 欧美—级高清免费播放| 久久久亚洲福利精品午夜| 欧美视频在线免费看| 国产视频久久久久久久| 国产精品一区二区三区成人| 日产日韩在线亚洲欧美| 一区二区三区美女xx视频| 色综合色综合久久综合频道88| 精品成人在线视频| 国产精品欧美一区二区| 国产一区二区激情| 国产精品www色诱视频| 国产精品久久久久国产a级| 欧美亚洲视频在线看网址| 国内精品伊人久久| 91国产美女视频| 亚洲欧美日本另类| 欧美xxxx18性欧美| 欧美日韩美女在线| 日韩人在线观看| 日韩欧美在线网址| 国产日韩欧美日韩| 在线精品高清中文字幕| 九九精品视频在线|