国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

定制你的Java--根據應用剪裁JavaBeans

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

  本 文 將 研 究javaBeans 的 定 制 接 口、 組 件 屬 性、 以 及 如 何 編 寫 你 的Beans 使 得 集 成 開 發 環 境(IDEs) 可 以 將 這 些 屬 性 顯 示 給 應 用 程 序 開 發 者。 我 們 還 將 討 論 以 下 的 問 題: 綁 定 和 約 束 屬 性, 它 們 可 以 方 便Beans 之 間 通 信 和 維 持 一 致 性; 定 制 器, 它 可 以 使 我 們 更 方 便 地 定 制;BeanBox 的 使 用, 它 是Sun 免 費 提 供 的JavaBeans 測 試 工 具。
  
  什 么 是 定 制
  軟 件 組 件 是 通 用 的 功 能 和 數 據 模 塊, 它 可 以 在 很 多 情 況 下 使 用, 軟 件 組 件 的 定 制 是 很 重 要 的, 如 果 應 用 程 序 開 發 者 可 以 控 制 其 外 觀 和 行 為, 它 才 能 在 很 多 應 用 程 序 中 得 到 應 用。 例 如, 如 果 一 個 按 鈕 類 的 文 本 標 簽 總 是“Button”, 與 之 相 關 的 動 作 總 是 重 啟 計 算 機( 雖 然 在 一 些 操 作 系 統 中 這 可 能 是 最 有 用 的 工 具 之 一) 的 話, 那 它 是 沒 有 多 大 用 處 的。
  
  簡 單 的 組 件, 如 按 鈕 都 有 很 多 開 發 者 可 以 控 制 的 屬 性, 其 中 包 括:
  
  是 否 使 能
  
  動 作
  
  背 景 顏 色
  
  文 本 顏 色
  
  大 小
  
  位 置
  
  形 狀
  
  標 簽 文 本
  
  當 按 此 按 鈕 時 播 放 的 聲 音 文 件
  復 雜 的 組 件 需 要 更 多 的 定 制。 定 制 一 個 遠 程 數 據 庫 連 接 可 能 從 可 用 的 服 務 器 列 表 中 進 行 選 擇( 信 息 只 有 在 運 行 時 才 可 用)、 選 擇 協 議( 同 上)、 指 定 用 戶 名 和 密 碼 和 設 置 通 過 防 火 墻 訪 問。
  
  Beans 的 屬 性
  一 般 說 來, 定 制 就 是 配 置Beans 的 內 部 狀 態, 使 其 外 觀 和 行 為 適 合 所 用 的 環 境。 這 些 內 部 狀 態( 顏 色、 大 小 和 密 碼 字 符 串 等) 在JavaBeans 規 范 里 稱 為 屬 性。Beans 中 的 屬 性 可 以 用 稱 為 訪 問 器(accessors) 的 方 法 讀 取 和 修 改。 一 個 訪 問 器 方 法 是 讀 取 屬 性 值 的getter 方 法, 或 者 是 修 改 屬 性 值 的setter 方 法。 在 按 鈕Beans 中 有String getLabel() 方 法, 它 返 回Beans 的 當 前 標 簽, 有void setLabel(String newLabel) 方 法, 它 設 置Beans 的 當 前 標 簽, 只 有getter 方 法 的 屬 性 是 只 讀 的。
  
  為 什 么 不 簡 單 地 訪 問Beans 內 部 地 數 據 成 員, 直 接 讀 取 和 修 改 它 們, 而 是 編 寫 一 些 訪 問 器 呢 ? 因 為 不 能 保 證 屬 性 和Beans 內 部 的 成 員 數 據 直 接 對 應。 例 如,Beans 中 的 標 簽 屬 性 可 能 是 一 個AWT 標 簽 對 象, 但 是 也 可 能 不 是。 標 簽 文 本 可 能 來 自 數 據 庫, 可 能 是 另 一 個Bean 的 標 簽, 也 可 能 當 需 要 時 形 成 一 個 標 簽。 訪 問 器 方 法 是Beans 中 屬 性 的 統 一 接 口, 它 隱 藏 了 屬 性 的 實 現 細 節。 這 是 好 的 面 向 對 象 編 程 慣 例, 因 為 它 減 小 了 對 象 間 的 依 賴 和“ 耦 合”。
  
  符 合JavaBeans 規 范 的 集 成 開 發 環 境 能 分 析Beans, 找 到 它 的 屬 性, 同 時 它 還 能 給 每 種 屬 性 創 建 直 觀 的 顯 示( 稱 為 屬 性 編 輯 器), 允 許 開 發 者 在 設 計 時 修 改 屬 性。 當 開 發 者 將 一 個Bean 放 入 應 用 程 序 中 時, 集 成 開 發 環 境 在 面 板 上 畫 出 此Bean, 然 后 顯 示 屬 性 表, 它 是Bean 所 有 屬 性 的 簡 單 列 表, 每 個 屬 性 有 一 個 對 應 的 編 輯 器。 集 成 開 發 環 境 調 用 所 有 的getter 方 法, 將Bean 中 當 前 屬 性 值 顯 示 在 屬 性 表。 當 開 發 者 修 改 屬 性 表 中 的 屬 性 時, 集 成 開 發 環 境 調 用 相 應 的setter 方 法, 更 新 所 選Bean 中 的 相 關 屬 性。
  
  對 低 等 到 中 等 復 雜 度 的Beans, 在 設 計 時 調 用setter 方 法 配 置 它 往 往 已 經 足 夠。 為 了 支 持 復 雜Beans 更 高 程 度 的 定 制, 規 范 中 定 義 了 定 制 器(customizer) 類。 開 發 者 可 以 擴 充Beans, 這 就 為 實 現 任 何 類 型 的 定 制 打 開 了 方 便 之 門: 復 雜 的 顏 色 拾 取 器、 圖 形 化 的 網 絡 配 置 精 靈, 只 要 你 愿 意, 甚 至 可 以 編 寫 一 個VRML 界 面。 實 際 上, 以 上 描 述 的 屬 性 表 可 以 看 作 是 集 成 開 發 環 境 自 動 產 生 的 定 制 器。 這 種 模 式 在JavaBeans 框 架 中 是 常 見 的: 簡 單 的 情 況( 在 這 種 情 況 下, 簡 單 的 屬 性 類 型 已 有 屬 性 編 輯 器) 往 往 只 須 很 少 或 根 本 不 須 工 作, 但 是 其 中 隱 藏 著 對 復 雜 情 況 的 訪 問 方 法。
  
  如 何 使Beans 可 定 制
  JavaBeans 框 架 使 創 建 有 可 定 制 屬 性 的Beans 變 得 相 當 容 易。 大 部 分 情 況 下, 根 本 無 須 寫 任 何 代 碼。 這 是 因 為JavaBeans 規 范 定 義 了 命 名 約 定, 集 成 開 發 環 境 可 用 它 來 推 斷 與 屬 性 相 關 的 方 法。 規 范 中 將 這 種 約 定 稱 作 設 計 模 板。 如 果 不 考 慮 語 義 原 則 的 話 則 很 簡 單: 名 字、 返 回 值 和 參 數 類 型 決 定 了 屬 性 的 名 字 和 類 型。 當 集 成 開 發 環 境 裝 載Beans 時, 使 用JDK 1.1 reflection 機 制 檢 查Beans 中 所 有 的 方 法, 尋 找 以get 和set 開 頭 的 方 法, 然 后 將 屬 性 加 入 到 屬 性 表 中, 以 便 開 發 者 定 制Beans。
  
  定 制Beans
  我 們 可 以 看 一 個 具 體Bean 定 制 的 例 子: 擴 展 一 個 簡 單 的BarChart Bean。 讀 源 程 序 便 可 以 發 現:BarChart Bean 已 經 有 符 合 規 范 中 設 計 模 板 的 讀 取 器 和 設 置 器 方 法 ─ ─void setPercent(int ipercent) 和int getPercent()。 換 句 話 說, 它 已 經 有 一 個 屬 性:percent。 將BarChart Bean 裝 載 入BeanBox 中 看 有 什 么 發 生。
  
  圖 的 左 邊 是 一 個 包 括 可 用Beans 的 面 板, 便 于 在BeanBox 中 放 置。 中 部 是BeanBox 本 身,BarChart 已 被 選 擇, 而 右 邊 是BarChart 的 屬 性 列 表。 屬 性 列 表 中 包 括 五 個 屬 性: 前 景 和 背 景(Color 類 型)、 字 體(Font 類 型)、percent( 整 數) 和 名 字( 字 符 串)。 當BeanBox 裝 載BarChart 時, 發 現int getPercent 和void setPercent(int iPercent) 方 法, 便 將percent 看 作 是Bean 的 一 個 屬 性, 并 將 它 以 及 一 個 整 型 數 屬 性 編 輯 器(percent 標 簽 右 邊 的 文 本 框) 加 入 到 屬 性 表 中。 調 用getPercent() 函 數 填 充 屬 性 編 輯 器 的 值( 本 例 中 值 為0)。 對 屬 性 表 中 的 所 有 屬 性 都 做 同 樣 的 處 理。
  
  BarChart 只 定 義 了percent 屬 性, 那 其 它 屬 性 是 從 哪 里 來 的 呢 ? 因 為BarChart 定 義 為:
  public class BarChart extends Canvas implements Serializable。
  
  BarChart 繼 承 了java.awt.Canvas, 而 它 又 繼 承 了java.awt.Component, 它 定 義 了Color getForeground(),void setForeground(Color) 等。 這 意 味 著, 如 果 你 定 義 一 個Bean 的 子 類, 你 便 巧 妙 地 得 到 一 個 包 括 父Bean 所 有 屬 性 的 新Bean。
  
  當 你 在BeanBox 的 屬 性 表 中 修 改 屬 性 時,Bean 馬 上 就 被 更 新。 在percent 的 屬 性 編 輯 器 中 輸 入"62",BeanBox 便 做 出 相 應 的 反 應, 如 圖2 所 示。
  
  集 成 開 發 環 境( 本 例 為BeanBox), 檢 測 到percent 屬 性 編 輯 器 的 值 改 變, 便 調 用setPercent() 更 新BarChart 的percent。
  
  如 果 你 的 應 用 程 序 正 好 需 要 一 個 藍 色 背 景、 兩 點 的 黑 色 邊 框 和 對 選 擇 百 分 比 填 充 紅 色,25 乘150 的BarChart, 一 切 都 很 好。
  
  好 在 我 們 有 此Bean 的 源 代 碼, 我 們 可 以 增 加 一 些 新 屬 性:Color 型fillColor、floodColor 和borderColor, 整 型borderWidth、barHeight 和barWidth。 作 為 例 子, 我 們 增 加floodColor() 訪 問 器。 我 們 首 先 定 義 填 充 顏 色PRivate Color fgColor_ = Color.red。 為 了 避 免 與java.awt.Component 的 前 景 和 背 景 屬 性 相 混 淆, 我 們 更 名 為floodColor, 并 編 寫 它 的 訪 問 器:
  
  private Color floodColor_ = Color.red;
  public void setFloodColor(Color floodColor)
  {
     floodColor_ = floodColor;
  }
  
  public Color getFloodColor()
  {
     return floodColor_;
  }
  
  對 其 他 屬 性 也 可 增 加 類 似 的 訪 問 器, 這 就 形 成 了 一 個 靈 活 的 新Bean 的 新 類 文 件。
  
  到 此,BarChart 就 是 可 定 制 的 了。 我 們 可 以 將 它 們 設 置 成 我 們 喜 歡 的 外 觀, 如 圖3 所 示。
  
  我 們 可 以 看 到 四 個BarChart Beans, 每 個 用 不 同 的 顏 色 方 案 和 不 同 的 百 分 比 填 充 定 制。 對BarChart 類 增 加 了 幾 個 方 法 便 可 給 應 用 程 序 開 發 者 提 供 極 大 的 靈 活 性。
  
  當 屬 性 的 類 型 是 內 建 的 類 型, 而 且 你 并 不 介 意 鍵 入 字 符 串 來 提 取 顏 色, 這 樣 工 作 得 很 好。 但 是 當 屬 性 的 類 型 為 自 定 義 類 型 時, 例 如BarChart 有direction 屬 性 指 示BarChart 的 增 長 方 向, 合 理 的 值 為 上、 下、

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南宁市| 榆社县| 白朗县| 舟曲县| 肇州县| 丹阳市| 竹溪县| 博客| 尉犁县| 泰兴市| 兴化市| 永城市| 建宁县| 增城市| 邓州市| 隆昌县| 龙山县| 左贡县| 获嘉县| 遵化市| 上思县| 深州市| 丹寨县| 佛冈县| 宁武县| 垫江县| 岑巩县| 南岸区| 武威市| 冷水江市| 石屏县| 伊宁县| 库车县| 依兰县| 搜索| 旺苍县| 图木舒克市| 建平县| 屯昌县| 西平县| 阳谷县|