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

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

JavaApplet編程技巧

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

  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 所 示。
  
  
  
  
  
  2. 擴 展 小 程 序 基 類 支 持 多 線 程
  通 常 情 況 下, 設 計 小 程 序 是 為 了 給 主 頁 增 加 交 互 性, 使 頁 面 更 加 生 動 活 潑。 因 此, 那 些 真 正 有 用 小 程 序, 如 動 畫、 實 時 更 新Internet 服 務 器 信 息 回 取、 一 般 娛 樂 等 通 常 都 是 持 續 運 行 的, 即 小 程 序 的 邏 輯 主 體 存 在 著 無 限 循 環。 這 個 邏 輯 主 體 不 宜 放 在 幾 個 瀏 覽 器 調 用 方 法 中, 如init( )、paint( )、
  start( ) 等。 這 是 因 為 隱 含 情 況 下, 小 程 序 所 有 主 邏 輯 都 采 用 單 一 線 程。 當 瀏 覽 器 調 用 方 法 中 出 現 死 循 環, 則 程 序 控 制 不 返 回。 如 果 用 戶 換 到 另 一 個 頁 面 之 后 小 程 序 還 在 運 行, 就 會 浪 費 處 理 器 資 源。 你 可 以 做 一 個 實 驗, 使 用 小 程 序 查 閱 器 運 行 小 程 序, 你 會 發 現 查 閱 器 本 身 完 全 停 止 作 用, 因 為 它 要 等 到 調 用 函 數 返 回 后, 才 能 繼 續 處 理 其 他 事 情( 如 響 應 菜 單)。 顯 然, 這 個 邏 輯 主 體 必 須 放 在 其 他 地 方。 解 決 方 法 是 在 小 程 序 框 架 中 加 入 線 程, 把 邏 輯 主 體 放 在 線 程run( ) 方 法 中。 只 在 瀏 覽 器 調 用 方 法start( ) 中 生 成 線 程, 而 在
  stop( ) 中 終 止 線 程 運 行, 這 樣 當 用 戶 不 查 閱 時 不 會 占 用 處 理 器 資 源。 圖2 表 示 瀏 覽 器、 小 程 序 和 線 程 之 間 的 關 系。
  
  
  
  由 于 瀏 覽 器/ 小 程 序/ 線 程 是 所 有 瀏 覽 器 都 采 用 的 模 型, 而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 所 示。
  
  
  
  示 例 程 序 如 下:
  
  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 瀏 覽 器 傳 送 這 些 小 程 序, 因 此 響 應 時 間 進 一 步 下 降。 為 了 縮 短 小 程 序 下 載 和 裝 入 時 間, 可 以 采 取 以 下3 種 方 法。
  
  使 執 行 文 件 盡 量 小 盡 管Internet(TCP 協 議) 可 以 接 受 任 意 長 度 的 數 據 流, 但 負 責 點 對 點 傳 送 的 網 絡 設 備( 例 如: 路 由 器) 對 一 次 傳 送 分 組 包 的 上 限 有 嚴 格 的 限 制, 通 常 這 一 限 制 是256 的 整 數 倍。 因 此

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品视频二区| 日韩视频免费大全中文字幕| 91网站在线免费观看| 成人免费午夜电影| 亚洲一区av在线播放| 97激碰免费视频| 欧美情侣性视频| 热久久这里只有精品| 欧美丝袜第一区| 日韩第一页在线| 色播久久人人爽人人爽人人片视av| 国产欧美日韩免费看aⅴ视频| 亚洲男人天堂网| 亚洲成人av在线| 色综合久久中文字幕综合网小说| 92福利视频午夜1000合集在线观看| 欧美成人午夜免费视在线看片| 2024亚洲男人天堂| 欧美成人精品h版在线观看| 日韩免费在线电影| 尤物99国产成人精品视频| 日韩精品极品视频免费观看| 播播国产欧美激情| 97精品在线视频| www.午夜精品| 热久久视久久精品18亚洲精品| 最近2019年中文视频免费在线观看| 国产97人人超碰caoprom| 中文字幕日韩免费视频| 奇门遁甲1982国语版免费观看高清| 日本久久久久久久久久久| 国产精品电影网| 欧美亚洲成人xxx| 国产一区二区三区在线免费观看| 国产精品a久久久久久| 91精品久久久久久久| 亚洲人成电影在线| 国产精品美女www爽爽爽视频| 欧美一区二三区| 国产乱肥老妇国产一区二| 伊人久久久久久久久久久久久| 欧美在线精品免播放器视频| 久久av在线播放| 日韩电影大全免费观看2023年上| 日本高清不卡在线| 成人有码在线播放| 国产一区二区三区在线观看网站| 欧美尺度大的性做爰视频| 在线视频日本亚洲性| 在线视频国产日韩| 综合国产在线观看| 国产suv精品一区二区| 黑人极品videos精品欧美裸| 中文字幕日韩av电影| 欧美性xxxxxxxxx| 欧美成人午夜影院| 欧美色视频日本版| 亚洲精选中文字幕| 法国裸体一区二区| 中文字幕精品—区二区| 国产主播精品在线| 在线看日韩av| 亚洲加勒比久久88色综合| 日韩亚洲一区二区| 668精品在线视频| 国产成人免费91av在线| 久久精品国产电影| 日本亚洲精品在线观看| 欧美整片在线观看| 97色在线观看| 亚洲国产精品视频在线观看| 欧美午夜无遮挡| 欧美色视频日本版| 国产成人高潮免费观看精品| 一区二区三区四区在线观看视频| 国产精品99久久久久久久久| 亚洲精品久久视频| 日韩免费在线电影| 中文字幕日韩av| 国产日韩精品一区二区| 国产中文字幕亚洲| 色系列之999| 欧美激情在线有限公司| 九九久久精品一区| 97久久精品人人澡人人爽缅北| 国产91在线高潮白浆在线观看| 成人av.网址在线网站| 久久97久久97精品免视看| 久久视频在线直播| 欧美在线视频网站| 欧美激情亚洲综合一区| 国产精品久久久久77777| 日韩欧美视频一区二区三区| 亚洲2020天天堂在线观看| 日韩电影在线观看永久视频免费网站| 国产成人一区二区三区小说| 国产69精品久久久久久| 欧美一级片在线播放| 久久久精品影院| 久久久久久香蕉网| 日韩国产高清污视频在线观看| 欧美性xxxx在线播放| 欧美一区深夜视频| 成人免费大片黄在线播放| 久久深夜福利免费观看| 91精品啪aⅴ在线观看国产| 91久热免费在线视频| 在线看国产精品| 国产综合香蕉五月婷在线| 精品国产鲁一鲁一区二区张丽| 亚洲午夜未满十八勿入免费观看全集| 国产精品偷伦免费视频观看的| www.日韩av.com| 久久综合五月天| 国产一区二区三区视频在线观看| 这里只有精品在线播放| 隔壁老王国产在线精品| 国产99久久精品一区二区 夜夜躁日日躁| 久久精品91久久香蕉加勒比| 欧美视频在线免费看| 亚洲自拍av在线| 国产精品激情av电影在线观看| 欧美又大粗又爽又黄大片视频| 亚洲999一在线观看www| 欧美风情在线观看| 欧美激情视频播放| 国产精品免费一区二区三区都可以| 538国产精品一区二区免费视频| 欧美精品做受xxx性少妇| 日韩三级影视基地| 欧美日韩xxxxx| 欧美自拍视频在线观看| 欧美小视频在线| 欧美视频一区二区三区…| 亚洲人成在线一二| 国产精品视频yy9099| 中文亚洲视频在线| 精品国产乱码久久久久久天美| 亚洲一级一级97网| 亚洲精品999| 国产亚洲激情在线| 国产精品美女www| 亚洲男人第一av网站| 国产日韩精品一区二区| 热草久综合在线| 欧美专区国产专区| 久久不射热爱视频精品| 久久久久久18| 97久久久久久| 久久精品中文字幕一区| 国内精品小视频| 日韩av大片在线| 欧美综合国产精品久久丁香| 在线色欧美三级视频| 欧美刺激性大交免费视频| 一区二区中文字幕| 日本欧美一二三区| 欧美性猛交xxxx乱大交3| 日日狠狠久久偷偷四色综合免费| 国产一区玩具在线观看| 中文字幕国产亚洲2019| 欧美高清在线视频观看不卡| 欧美三级免费观看| 国产91精品高潮白浆喷水|