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

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

Java Applet 編 程 技 巧

2019-11-18 11:57:44
字體:
來源:轉載
供稿:網友

  1. java Applet 概 述
     Java Applet 程 序 分 為 兩 類:Java 小 程 序(Applet) 和Java 應 用 程 序(application), 這 兩 類 程 序 是 有 區 別 的。Java Applet 嵌 入 在WWW 的 頁 面, 作 為 頁 面 的 組 成 部 分 被 下 載, 并 能 運 行 在 實 現Java 虛 機 器(JVM) 的Web 瀏 覽 器 中。Java 的 安 全 機 制 可 以 防 止 小 程 序 存 取 本 地 文 件 或 其 他 安 全 方 面 的 問 題。 而 一 個Java 應 用 程 序 運 行 于Web 瀏 覽 器 之 外, 沒 有Applet 運 行 時 的 諸 多 限 制。 另 外, 兩 者 程 序 設 計 上 的 最 大 區 別 在 于:Java Applet 沒 有 主 程 序, 而Java 應 用 程 序 一 定 要 有 主 程 序。 在Java 中 每 個applet 都 是 由Applet 的 子 類 來 實 現。 開 發 人 員 自 定 義 的applet 通 過 重 載Applet 的 幾 個 主 要 成 員 函 數 完 成 小 應 用 程 序 的 初 始 化、 繪 制 和 運 行。 這 些 函 數 是init( )、paint( )、start( )、stop( ) 和destory( )。
  
     一 個applet 的 生 命 周 期 與Web 頁 面 有 關。 當 首 次 加 載 含applet 的 頁 面 時, 瀏 覽 器 調 用init( ) 方 法, 完 成applet 的 初 始 化。 然 后 調 用paint( ) 或start( ) 方 法 繪 制 或 啟 動 程 序。 當 用 戶 離 開 頁 面 時, 瀏 覽 器 調 用stop( ) 方 法 停 止 小 程 序 運 行。 若 用 戶 關 閉 瀏 覽 器 將 使applet 停 止 運 行, 瀏 覽 器 調 用destory( ) 方 法 終 止, 使 小 應 用 程 序 有 機 會 釋 放 其 存 在 期 間 鎖 定 的 資 源。 只 要 用 戶 不 關 閉 瀏 覽 器, 重 新 加 載 頁 面, 瀏 覽 器 則 只 調 用start( ) 方 法 和paint( ) 方 法 重 新 繪 制 并 運 行 小 程 序。Applet 生 命 周 期 如 圖1 所 示。
   Java Applet 編 程 技 巧(圖一)
  2. 擴 展 小 程 序 基 類 支 持 多 線 程
     通 常 情 況 下, 設 計 小 程 序 是 為 了 給 主 頁 增 加 交 互 性, 使 頁 面 更 加 生 動 活 潑。 因 此, 那 些 真 正 有 用 小 程 序, 如 動 畫、 實 時 更 新Internet 服 務 器 信 息 回 取、 一 般 娛 樂 等 通 常 都 是 持 續 運 行 的, 即 小 程 序 的 邏 輯 主 體 存 在 著 無 限 循 環。 這 個 邏 輯 主 體 不 宜 放 在 幾 個 瀏 覽 器 調 用 方 法 中, 如init( )、paint( )、
  start( ) 等。 這 是 因 為 隱 含 情 況 下, 小 程 序 所 有 主 邏 輯 都 采 用 單 一 線 程。 當 瀏 覽 器 調 用 方 法 中 出 現 死 循 環, 則 程 序 控 制 不 返 回。 如 果 用 戶 換 到 另 一 個 頁 面 之 后 小 程 序 還 在 運 行, 就 會 浪 費 處 理 器 資 源。 你 可 以 做 一 個 實 驗, 使 用 小 程 序 查 閱 器 運 行 小 程 序, 你 會 發 現 查 閱 器 本 身 完 全 停 止 作 用, 因 為 它 要 等 到 調 用 函 數 返 回 后, 才 能 繼 續 處 理 其 他 事 情( 如 響 應 菜 單)。 顯 然, 這 個 邏 輯 主 體 必 須 放 在 其 他 地 方。 解 決 方 法 是 在 小 程 序 框 架 中 加 入 線 程, 把 邏 輯 主 體 放 在 線 程run( ) 方 法 中。 只 在 瀏 覽 器 調 用 方 法start( ) 中 生 成 線 程, 而 在
  stop( ) 中 終 止 線 程 運 行, 這 樣 當 用 戶 不 查 閱 時 不 會 占 用 處 理 器 資 源。 圖2 表 示 瀏 覽 器、 小 程 序 和 線 程 之 間 的 關 系。
   Java Applet 編 程 技 巧(圖二)
   由 于 瀏 覽 器/ 小 程 序/ 線 程 是 所 有 瀏 覽 器 都 采 用 的 模 型, 而Java.applet.Applet 類 本 身 并 不 支 持 線 程。 在 實 際 使 用 中, 為 方 便 操 作, 我 們 可 以 派 生Applet 類 生 成 一 個 支 持 線 程 的 子 類, 今 后 再 編 寫applet 時, 就 可 以 直 接 從 子 類 中 派 生, 程 序 邏 輯 主 體 放 在run( ) 方 法 中, 將 線 程 控 制 隱 藏 起 來。 這 個 子 類 如 下:
  
  import Java.applet.*;
  import Java.awt.*;
  class MultiThreadApplet extends Applet implements Runnable {
  Thread thisThread;
  Public void start( ) {   if(thisThread==null) {
   thisThread=new Thread(this);
   thisThread.start( );{
   }
  public void stop( ) {
   if (thisThread! =null) {
  thisThread.stop( );
  thisThread=null;}
   }
  public void run ( ) {}}
     由 于run( ) 是 接 口Runnable 的 抽 象 方 法, 所 以 在MultiThreadApplet 類 中 也 需 要 進 行 定 義, 只 不 過 內 容 為 空。 下 面 的 例 子 顯 示 如 何 使 用 這 個 類。 程 序 包 含 一 個 無 限 循 環 累 加 操 作, 并 將 結 果 顯 示 在 屏 幕 上:
  
  import java.awt.*;
  public class counter extends MultiThreadApplet{
  int Counter;
  public void run( ){
   while(true){
     counter++;
     repaint( );}
  }
   public void paint(Graphics g) {
  g.drawString(string.valueof(counter),10,10);{
   }
     很 顯 然, 這 個 小 程 序 對 線 程 的 操 作 已 被 隱 藏 在Multi ThreadApplet 中。
  
    
  
  3. 解 決 動 畫 中 的 一 些 問 題
     動 畫 的 本 質 就 是 運 動 的 圖 形, 一 系 列 連 續 顯 示 的 靜 止 圖 形 會 給 我 們 一 種 連 續 動 畫 的 假 象。 只 要 動 畫 速 度 足 夠 快, 則 分 散 的 靜 止 圖 形 就 會 合 并 成 一 個 連 續 運 動 的 流 程。
  
     繪 制 動 畫 十 分 簡 單, 只 需 遵 照 以 下 三 步 即 可;(1) 擦 去 整 個 小 程 序 繪 圖 區;(2) 重 畫 動 畫 背 景;(3) 在 新 的 位 置 繪 制 圖 形。 但 是, 當 動 畫 連 續 幀 之 間 運 動 和 顏 色 不 連 續 時 就 會 發 生 閃 爍 現 象( 例 子 略)。 問 題 出 在 小 程 序 區 的 屏 幕 刷 新 上, 有 兩 種 方 法 可 以 防 止 動 畫 閃 爍。 第 一 種 方 法 是 只 做 局 部 刷 新, 即 每 次 只 擦 除 改 變 的 部 分。 例 如: 如 果 要 繪 制 一 幅" 飛 行 的 星 空" 動 畫, 每 次 刷 新 操 作, 先 擦 去 前 一 位 置 的 星 星, 再 在 新 的 位 置 繪 制 一 個。 但 是, 如 果 動 畫 比 較 復 雜, 運 動 部 分 重 疊 較 多, 則 局 部 刷 新 操 作 很 繁 瑣 也 影 響 程 序 運 行 速 度。 在 這 種 情 況 下, 可 以 用 另 外 一 種 方 法( 雙 緩 存) 來 解 決 閃 爍 問 題。 它 的 核 心 思 想 是 在 屏 幕 外 完 成 一 幀 的 全 部 動 畫, 然 后 把 最 后 繪 制 完 的 幀 顯 示 在 小 程 序 屏 幕 上。 過 程 如 圖3 所 示。
  Java Applet 編 程 技 巧(圖三)
  示 例 程 序 如 下:
  
  import java.awt.*;
  public class Ball extends MultiThreadApplet {
  Image ball=null;
  Image applet=null;
  Graphics appletG,ballG;
  Public void run( ){
   If(ball= =null){
     Applet=createlmage(bounds( ).width,bounds( ).
                Height);
     Ball=create Image(70,70);
     AppletG=applet.getGraphics( );
     BallG=ball.getGraphics( );
     BallG.setColor(Color.gray);
     BallG.drawOral(0,0,70,70); {
   For(int x=0;x <400;x++) { Double angle="((double)x)/20;" Int y="(int)(Math.abs(Math.sin(angle))*80);" AppletG.clearRect(0,0,bounds( ).width.bounds( ), Helght); DrawBackground(appletG); AppletG.drawImage(ball,x.80-y,this); This.getGraphics( ).drawImage(applet,0,0,this); Try { Thread.sleep(25); } catch(Exception ignored) {}} } PRivate void drawBackground(Graphics g) { for(int I="0;I" < 1;I++){ g.drawLine(0.i*10,400,I*10); } } }
     小 程 序 首 先 用createImage( ) 取 得 與 小 程 序 大 小 完 全 相 同 的 屏 外 圖 形 緩 存, 賦 給 變 量applet, 然 后 得 到 緩 存 的 繪 圖 對 象appletG。 以 后 對 幀 的 刷 新 操 作 過 程都 是 針 對appletG。 這 包 括 清 除 幀、 繪 制 背 景、 在 新 位 置 繪 制 圖 形。最后再用drawImage ( ) 方 法 把 緩 存 復 制 到 小 程 序 的 屏 幕 顯 示 區。 運 行 這 個 小 程 序, 你 會 發 現 動 畫 非 常 平 滑, 不 存 在 閃 爍 現 象。
  
     除 了 閃 爍 之 外, 如 果 動 畫 過 于 復 雜, 幀 速 率 就 可 能 降 低。 若 動 畫 降 到 每 秒20, 幀 是 動 畫 會 出 現 間 斷 現 象 影 響 顯 示 效 果。 因 此 有 必 要 優 化 動 畫 速 度, 下 面 列 出 了 一 些 可 行 的 方 案;(1) 畫 得 盡 可 能 少;(2) 用 較 快 的 繪 圖 算 法;(3) 用 顏 色 循 環 等 技 巧 來 繪 畫 某 一 部 分;(4) 用 圖 案 來 表 示 細 節;(5) 用 定 點 整 數 進 行 三 維 計 算;(6) 用 查 詢 的 預 先 計 算 結 果 來 處 理 復 雜 算 法。
  
    
  
  4. 縮 短 小 程 序 裝 入 時 間
     真 正 功 能 性 的 小 程 序 本 身 并 不 小, 這 就 意 味 著 小 程 序 從Internet 上 下 載 需 要 花 很 多 時 間。 隨 著 小 程 序 的 普 及, 越 來 越 多 的Internet 頻 帶 被 用 于 從 各 地 的 服 務 器 向 客 戶 端Web 瀏 覽 器 傳 送 這 些 小 程 序, 因 此 響 應 時 間 進 一 步 下 降。 為 了 縮 短 小 程 序 下 載 和 裝 入 時 間

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美另类xxx| 国产精品男人爽免费视频1| 日本高清视频精品| 欧美日韩激情美女| 欧美成人一区在线| 日韩中文字幕国产精品| 国语自产偷拍精品视频偷| 97视频在线观看成人| 成人激情视频免费在线| 日韩欧美成人免费视频| 久久亚洲精品国产亚洲老地址| 国模精品视频一区二区三区| 国产精品一区av| 国产精品99久久久久久久久久久久| 91精品国产综合久久久久久久久| 岛国精品视频在线播放| 日韩欧美高清视频| 久久精品成人动漫| 中文字幕亚洲欧美在线| 国产中文日韩欧美| 国产精品久久久久久婷婷天堂| 中文字幕亚洲欧美日韩高清| www.亚洲人.com| 亚洲精品自拍视频| 久久免费高清视频| 亚洲无亚洲人成网站77777| 国产成人欧美在线观看| 北条麻妃在线一区二区| 日韩在线视频免费观看高清中文| 日韩国产中文字幕| 国产精品日韩在线一区| 性金发美女69hd大尺寸| 97久久精品视频| 91天堂在线观看| 国产欧美日韩精品丝袜高跟鞋| 中国china体内裑精亚洲片| 欧美理论片在线观看| 国产精品久久久久久久久久ktv| 亚洲xxxx做受欧美| 91免费在线视频网站| 韩国视频理论视频久久| 91色p视频在线| 日韩美女视频免费在线观看| 国产成人精品免费视频| 亚洲激情视频网| 福利一区福利二区微拍刺激| 在线国产精品视频| 亚洲国产99精品国自产| 中文字幕不卡在线视频极品| 亚洲成年人影院在线| 亚洲精品不卡在线| 成人福利在线观看| 久久精品国产欧美亚洲人人爽| 美女久久久久久久| 97在线观看视频国产| 欧美与欧洲交xxxx免费观看| 日本精品久久中文字幕佐佐木| 国产精品白嫩美女在线观看| 精品福利视频导航| 亚洲人午夜色婷婷| 2019最新中文字幕| 亚洲free性xxxx护士hd| 日韩av观看网址| 久久久影视精品| 欧美丰满少妇xxxxx做受| 91视频88av| 欧美精品videossex性护士| 色综合久久久久久中文网| 中文字幕日韩视频| 国产精品精品视频| 成人福利网站在线观看11| 国产欧美精品久久久| 91色视频在线导航| 欧美午夜视频一区二区| 欧美做爰性生交视频| 国产mv免费观看入口亚洲| 欧美日韩国产91| 狠狠色狠狠色综合日日小说| 国产一区二区在线播放| www欧美日韩| 中文字幕日韩综合av| 中文字幕亚洲激情| 欧美一级高清免费播放| 国产精品亚洲视频在线观看| 日韩午夜在线视频| 日韩有码在线电影| 日韩av在线网站| 精品国产一区二区三区久久狼黑人| 日韩欧美精品在线观看| 欧美国产日韩一区二区三区| 亚洲成av人乱码色午夜| 国产精品视频区1| 日韩高清av在线| 91精品国产高清久久久久久91| 欧美又大粗又爽又黄大片视频| 亚洲精品v欧美精品v日韩精品| 2019国产精品自在线拍国产不卡| 91免费欧美精品| 亚洲色图偷窥自拍| 国产自产女人91一区在线观看| 亚洲精品在线观看www| 久久久久久久久电影| 亚洲欧美日韩天堂一区二区| 91国产精品视频在线| 国产主播精品在线| 日本高清+成人网在线观看| 日韩欧美aaa| 91av在线不卡| 亚洲精品美女视频| 久久久最新网址| 亚洲成人激情视频| 在线激情影院一区| 亚洲一区二区久久久久久久| 精品久久久久久中文字幕| 亚洲国产精品va在线看黑人动漫| 亚洲成人三级在线| 日本精品免费一区二区三区| 国产一区二区三区高清在线观看| 日韩精品高清在线观看| 97在线视频一区| 欧美性少妇18aaaa视频| 国产激情999| 国产精品高潮视频| 韩国美女主播一区| 日韩福利伦理影院免费| 国产精品∨欧美精品v日韩精品| 最近免费中文字幕视频2019| 久久精品色欧美aⅴ一区二区| 日韩av最新在线| 国产一区二区三区在线观看网站| 国产精品久久久999| 国产成人在线一区二区| 在线视频一区二区| 欧美老女人性生活| 日韩在线小视频| 欧美精品情趣视频| 91精品国产91久久久久久| 黑人欧美xxxx| 欧美大片在线看| 亚洲人成在线播放| 91沈先生在线观看| 午夜精品www| 最近2019中文字幕在线高清| 欧美日韩国产精品| 中文字幕在线看视频国产欧美| 日韩中文在线观看| 亚洲一区www| 欧美精品久久久久久久免费观看| 国产精品久久不能| 欧美老少配视频| 久久精品91久久久久久再现| 日韩在线观看av| 国产一区二区欧美日韩| 日本亚洲欧洲色| 伊人av综合网| 久久91精品国产91久久久| 亚洲天堂男人的天堂| 欧美在线免费观看| 精品久久久久久亚洲精品| 亚洲午夜av久久乱码| 精品亚洲一区二区三区在线播放| 欧美激情区在线播放| 国产精品久久久av| 日韩av一区在线观看|