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

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

控制bean定制器的技巧

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

  概 要:
  集 成 開 發 環 境(IDEs) 可 以" 解 剖" 一 個bean 類 的 文 件 并 且 生 成 一 個 帶 參 數 的 對 話 框, 開 發 者 可 以 利 用 它 來 定 制 自 己 的bean。 但 是 這 些" 標 準 的" 定 制 對 話 框 留 下 了 很 多 參 數 以 滿 足 它 的 適 應 性, 靈 活 性 和 美 學 目 的, 本 文 論 述 的 是 怎 樣 在 設 計 時( 當 然, 有 時 也 在 運 行 時) 定 制bean。 這 兩 個 月 你 將 要 學 習 怎 樣 定 制 你 的beans。
  
  我 們 希 望 我 們 的 beans 不 僅 讓 用 戶 易 用, 更 重 要 的 是 使 應 用 程 序 的 開 發 者 方 便 的 通 過 改 變 參 數 來 設 計 自 己 的bean。 在11 月 號 的 專 題 文 章 定 制 你 的java—— 根 據 應 用 剪 裁JavaBeans 里, 我 們 看 到 了 怎 樣 定 制JavaBeans。 一 個 簡 單 的 命 名 方 案(nameing scheam) 提 供 了 一 個 最 小 化 機 制, 這 個 機 制 使 用 戶 可 以 在 一 個 集 成 開 發 環 境(IDE) 或 其 他bean 的 對 象 集 成 環 境-- 如BeanBox 里 定 制bean。 當 要 定 制 一 個bean 時, 這 個 集 成 開 發 環 境(IDE) 確 定 這 個bean 的 類 并 彈 出 一 個 對 話 框, 每 一 個 屬 性 都 有 自 己 的 子 編 輯 框。 而 控 制, 替 換 和 擴 展 這 些 編 輯 框 正 是 本 文 要 討 論 的 問 題。
  
  本 文, 我 們 將 回 顧 一 下 基 礎 概 念, 以 便 于 理 解JavaBeans 的 獨 特 的 定 制 方 便 性。 你 將 要 了 解 到 實 現Bean 的 不 同 的 步 驟 和 類。 然 后 我 們 將 講 述 一 個 用BeanInfo 界 面 生 成 的 簡 單 構 件(form), 這 個form 講 明 了 如 何 配 置 一 個bean。 我 們 還 將 寫 一 個 很 簡 單 的 定 制 屬 性 編 輯 器( 它 使 你 方 便 的 編 輯 屬 性) 并 把 它 裝 在BeanBox 里。 這 個 過 程 中 我 們 將 接 觸 到Introspector 類, 所 謂Introspector 類 是 一 種 被 集 成 開 發 環 境(IDE) 或 其 他 bean 集 成 環 境 用 來 分 析 類 文 件 的JavaBeans 類。
  
  注 意: 本 文 中, 我 使 用 的 術 語IDE 指 的 是" 任 何 涉 及 到bean 內 部 的bean 集 成 環 境"。 它 當 然 不 局 限 于IDEs: 指 像BeanBox, 信 息 公 路(information"buses") 等 類 似 于 此 的, 需 要 知 道bean 內 部 情 況 的Beans 瀏 覽 器,Bean 測 試 器。 我 使 用"IDE" 只 因 為 它 只 需 三 個 字 母, 而 且 在 本 文 中 很 常 用。
  
  定 制 的 步 驟(levels)
  由 于bean 越 來 越 復 雜, 屬 性( 或 稱 存 取 方 法) 越 來 越 多。 更 多 的 屬 性 出 現 在 對 話 框 里, 于 是 我 們 用 來 定 制 bean 的 對 話 框 越 便 越 大, 使 用 起 來 很 不 方 便, 容 易 混 亂。
  
  bean 的 使 用 者 不 一 定 很 清 楚 它 的 屬 性 的 意 義 以 及 它 們 之 間 的 聯 系。 某 些 屬 性, 特 別 是 索 引 屬 性, 在 沒 有 屏 幕 時 很 不 好 理 解。 另 一 些 如 果 在 圖 形 狀 態 下 編 輯 會 很 容 易 理 解。
  
  JavaBeans 規 范 和JavaBeans 包 解 決 了 這 個 問 題, 原 因 是 它 靈 活, 開 放, 易 擴 展 的 規 定, 分 類 和 界 面。 這 就 使bean 的 開 發 者 可 以 了 解 用 戶 將bean 加 入 自 己 的 程 序 中 來 定 制 它 時 的 屏 幕 顯 示。
  
  當 統 一 設 計 面 板 和 讓IDE 創 制 自 己 的 對 話 框 時, 為 了 寫 一 個 使 用 戶 可 以 在 全 圖 形 用 戶 界 面( complete GUI) 下 自 己 配 置 的 bean , 定 制 控 制 分 為 幾 步(levels)。
  
  定 制 步 驟(level)1: 使 用 設 制 模 板
  如 果 你 已 經 讀 過 這 個JavaBeans 系 列 的 上 一 篇 關 于 定 制bean 的 文 章, 你 已 經 知 道 存 取 方 法 可 以 改 變bean 的 內 部 狀 態。 你 還 會 記 得 設 制 模 板(design pattern) 是JavaSoft 用 來 表 示 存 取 方 法 的 術 語, 是 根 據"JavaBeans 規 范" 的 命 名 規 則 定 義 的, 所 以 它 們 的 程 序 包 可 以 表 示 出 所 有 的 屬 性 和 設 置 方 法。 如 果 你 沒 有 讀 過 上 述 文 章, 我 來 做 一 個 小 結: 屬 性 是 一 個 軟 件 對 象 的 內 部 狀 態 的 子 集( 這 里 的 軟 件 對 象 指 的 是bean)。 屬 性 的 存 取 方 法 提 供 了 改 變 一 個bean 的 某 個 外 部 特 性 的 唯 一 方 法。JavaBeans 規 范 中 規 定 每 一 個 屬 性 必 需 有 像 這 樣 的 存 取 方 法
  
  SomeType getPRoperty() (getter)
  void setProperty(SomeType value) (setter)
  
  如 果JavaBean 遵 守JavaBeans 規 范, 集 成 開 發 環 境 就 可 以 分 析 一 個bean, 找 到 名 字 附 和 上 述 模 式 的 存 取 方 法 并 且 指 出 它 的 屬 性 和 設 置 方 法。 當IDE 知 道 屬 性 的 名 字, 類 型 和 存 取 方 法 后, 它 立 即 可 以 生 成 一 個 定 制 對 話 框。 如 果 你 對 這 段 不 是 很 理 解, 可 以 參 閱 我 上 面 提 到 的11 月 號 的 關 于"JavaBeans" 的 文 章。
  
  這 樣, 你 已 經 學 會 了 定 制 的 最 基 本 的 步 驟 : 設 制 模 板。 這 是IDEs 和 其 他bean 軟 件 包 提 供 給 應 用 程 序 開 發 者 定 制 一 個 bean 的 最 基 礎 的 方 法。
  
  如 果 只 依 賴 于 設 制 模 板 做 為 定 制 的 界 面, 存 在 著 幾 個 問 題。 首 先, 由 于IDE 只 知 道 對 象 的 名 字 和 屬 性, 而 不 知 道 屬 性 的 意 義, 大 部 分 將 按 照 字 母 順 序 排 列 或 按 某 種 順 序 列 表。 你 的 定 制 對 話 框 將 整 齊 但 不 實 用。 對 話 框 也 會 非 常 巨 大。 回 憶 一 下 我 們 在 上 幾 篇 文 章 中 開 發 的BarChartBean 程 序。 如 下 圖:
  
  BarChartBean 和 它 的 定 制 對 話 框( 屬 性 單)
  
  這 是 一 個 簡 單 漂 亮 的bean, 但 請 看 一 下 它 的 屬 性 表 ! 我 可 以 輕 而 易 舉 地 舉 出 成 打 的 很" 酷" 的 屬 性 加 在 上 面: 旋 轉, 立 體 效 果, 色 彩 變 幻 等 等。 那 么, 再 設 想 一 下 用 這 個 方 法 配 置 電 子 制 表 軟 件 或 字 處 理 軟 件 bean: 毫 不 夸 張 得 說 將 有 成 百 的 屬 性 列 一 個 長 長 的 表。
  
  這 里 也 有 很 多 你 并 不 想 列 出 的 屬 性。 如, 上 圖 中 BarChartBean 右 邊 的 對 話 框 里 的 幾 個 屬 性 象 字 體, 前 景, 背 景, 它 們 與BarChartBean 毫 無 關 系。(BarChartBean 不 使 用 文 字, 并 且 總 處 于 最 大 化。) 因 為 這 些 屬 性 繼 承 于java.awt.Component 所 以 它 們 列 在 這 里。
  
  BeanBox 盡 力 把 它 所 知 的BarChartBean 的 點 滴 列 給 你, 但 它 超 過 了 你 的 要 求。BarChartBean 出 現 時 我 不 需 要 所 有 這 些 屬 性, 它 還 會 把 你 搞 胡 涂。" 背 景" 和" 填 充 色" 有 什 么 區 別 ?( 設 計 者 當 然 知 道, 但 使 用 者 不 一 定 清 楚 ) 看 來 最 好 把 與 用 戶 無 關 的, 會 帶 來 麻 煩 的 屬 性 隱 藏 起 來。
  
  定 制 步 驟(level)2: 提 供BeanInfo 對 象
  定 制 的 第 二 步,java.beans.BeanInfo 的 界 面 里 解 決 了 這 些 問 題。BeanInfo 界 面 使 你 的bean 向 每 一 個" 要 求" 的 用 戶 描 述 自 己(" 要 求" 這 個 詞 我 將 在 后 面 介 紹)。 除 了 顯 示 屬 性,BeanInfo 界 面 還 可 以 顯 示 名 字, 圖 標, 屬 性 列 表, 方 法, 事 件 等 等。( 我 們 將 在 下 一 段 里 更 深 的 討 論BeanInfo)。 很 多 屬 性 用 簡 單 的 設 置 整 數, 顏 色 或 文 件 的 方 法 不 能 很 好 的 表 示。 象 是 常 見 的 枚 舉 類 型: 也 許 我 只 想 在 下 拉 列 中 設 幾 種 色 彩( 綠 色, 黃 色 等)。 另 外 的 人 也 許 要 在 一 個Tabbean 中 設 置 制 表 符( 如 字 處 理 程 序 中 一 個PageLayout bean 的 子 構 件)。 設 制 模 板 和 BeanInfo 不 能 直 接 控 制 這 些 情 況, 而java.beans.PropertyEditor 的 界 面 功 能 使 程 序 員 能 直 接 在 圖 形 界 面 下 設 置 參 數; 換 言 之, 你 可 以 寫 屬 性 編 輯 器。
  
  定 制 步 驟(level)3: 提 供 定 制 屬 性 編 輯 器
  定 制 的 第 三 步,java.beans.PropertyEditor 和 java.beans.PropertyEditorSupport, 使 你 能 寫 自 己 的 屬 性 編 輯 器。 屬 性 編 輯 器 是 一 個 單 獨 編 輯 具 有 一 定 類 型 的 屬 性 的 構 件。 當 你 擊 中"Color" 設 置 顏 色 時 , 會 彈 出 BeanBox 里"Color" 屬 性 的 標 準 編 輯 器:
  
  使 用ColorEditor 屬 性 編 輯 器
  
  你 看 到 的 這 個 對 話 框 是 BeanBox 用 來 編 輯"Color" 屬 性 類 的 標 準 屬 性 編 輯 框。PropertyEditor 界 面 允 許 你 發 明 新 類 型。
  
  PropertyEditor 界 面 通 過 對 標 簽(tags) 的 支 持 使 你 實 現 枚 舉 類 型。
  
  某 些 屬 性 由 一 個 軟 件 構 件 中 的 幾 個 實 際 的 屬 性 組 成, 可 以 認 為 是" 邏 輯" 屬 性。" 邏 輯" 屬 性 的 一 個 最 好 的 例 子 是 彩 色 板(color balance), 它 在 一 個 面 上 顯 示 各 種 色 彩。 你 可 以 在 這 個 標 準 屬 性 列 里 選 擇 屬 性 如" 紅" 或" 黃", 但 不 必 在 應 用 時 列 給 用 戶。 顯 示 色 彩 板 的 最 好 方 式 大 概 是: 把 圖 像 用 當 前 色 彩 顯 示, 在 它 周 圍 用 thumbnails 表 示 變 化。 用 戶 可 以 選 擇 最 滿 意 的 圖 像, 對 話 框 對 這 幅 圖 像 再 做 編 輯。(Adobe photoshop 里 的 對 話 框 類 似 于 此)。
  
  定 制 步 驟(level)4: 提 供 定 制 器
  定 制 控 制 的 第 四 步 是java.beans.C

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 文水县| 清原| 景德镇市| 额敏县| 玉树县| 且末县| 宁波市| 简阳市| 都江堰市| 平山县| 星子县| 漳州市| 山丹县| 绍兴县| 正安县| 筠连县| 柳江县| 宁武县| 虹口区| 北京市| 庄河市| 彝良县| 高碑店市| 凤山县| 新密市| 余姚市| 金寨县| 陈巴尔虎旗| 巫山县| 西藏| 新邵县| 日照市| 安吉县| 会东县| 元朗区| 肥乡县| 柳州市| 吉水县| 延边| 永昌县| 革吉县|