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

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

Applet編程技巧

2019-11-17 06:24:37
字體:
來源:轉載
供稿:網友

  1.java Applet概述 

  Java程序分為兩類:Java小程序(Applet)和Java應用程序(Applic ation),這兩類程序是有區別的。Java Applet嵌入在WWW的頁面,作為 頁面的組成部分被下載,并能運行在實現Java虛機器(JVM)的Web瀏覽 器中。Java的安全機制可以防止小程序存取本地文件或其他安全方面 的問題。而一個Java應用程序運行于Web瀏覽器之外,沒有Applet運行 時的諸多限制。另外,兩者程序設計上的最大區別在于:Java Applet 沒有主程序,而Java應用程序一定要有主程序。
  在Java中每個applet都是由Applet的子類來實現。開發人員自定 義的applet通過重載A pplet的幾個主要成員函數完成小應用程序的 初始化、繪制和運行。這些函數是init()、pa int()、start()、sto p()和destory()。
  一個applet的生命周期與Web頁面有關。當首次加載含applet的 頁面時,瀏覽器調用ini t()方法,完成applet的初始化。然后調用pai nt()或start()方法繪制或啟動程序。當用戶離開頁面時,瀏覽器調用 stop()方法停止小程序運行。若用戶關閉瀏覽器將使applet停止運行 ,瀏覽器調用destory()方法終止,使小應用程序有機會釋放其存在期 間鎖定的資源。只要用戶不關閉瀏覽器,重新加載頁面,瀏覽器則只調 用start()方法和paint()方法重新繪制并運行小程序。


  2.擴展小程序基類支持多線程 

  通常情況下,設計小程序是為了給主頁增加交互性,使頁面更加生 動活潑。因此,那些真正有用小程序,如動畫、實時更新Internet服務 器信息回取、一般娛樂等通常都是持續運行的,即小程序的邏輯主體 存在著無限循環。這個邏輯主體不宜放在幾個瀏覽器調用方法中,如i nit()、paint()、start()等。這是因為隱含情況下,小程序所有主邏 輯都采用單一線程。當瀏覽器調用方法中出現死循環,則程序控制不 返回。假如用戶換到另一個頁面之后小程序還在運行,就會浪費處理 器資源。你可以做一個實驗,使用小程序查閱器運行小程序,你會發現 查閱器本身完全停止作用,因為它要等到調用函數返回后,才能繼續處 理其他事情(如響應菜單)。顯然,這個邏輯主體必須放在其他地方。 解決方法是在小程序框架中加入線程,把邏輯主體放在線程run()方法 中。只在瀏覽器調用方法start()中生成線程,而在stop()中終止線程 運行,這樣當用戶不查閱時不會占用處理器資源。圖2表示瀏覽器、小 程序和線程之間的關系。
  由于瀏覽器/小程序/線程是所有瀏覽器都采用的模型,而Java.ap plet.Applet類本身并不支持線程。在實際使用中,為方便操作,我們 可以派生Applet類生成一個支持線程的子類, 今后再編寫applet時, 就可以直接從子類中派生,程序邏輯主體放在run()方法中,將線程控 制隱藏起來。這個子類如下:
  import Java.applet.*;
  import Java.awt.*;
  class MultiThreadApplet extends Applet implements Runnab le {
   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的抽象方法,所以在MultiThreadApple t類中也需要進行定義,只不過內容為空。下面的例子顯示如何使用這 個類。程序包含一個無限循環累加操作,并將結果顯示在屏幕上:
  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); }
  }
  很顯然,這個小程序對線程的操作已被隱藏在MultiThreadApplet 中。


  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.80y,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()取得與小程序大小完全相同的屏外 圖形緩存,賦給變量app let,然后得到緩存的繪圖對象appletG。以后 對幀的刷新操作過程都是針對appletG。這包括清除幀、繪制背景、 在新位置繪制圖形。最后再用drawImage()方法把緩存復制到小程序 的屏幕顯示區。運行這個小程序,你會發現動畫非常平滑,不存在閃爍 現象。
  除了閃爍之外,假如動畫過于復雜,幀速率就可能降低。若動畫降 到每秒20幀,則動畫會出現間斷現象影響顯示效果。因此有必要優化 動畫速度,下面列出了一些可行的方案;①畫得盡可能少;②用較快的 繪圖算法;③用顏色循環等技巧來繪畫某一部分;④用圖案來表示細節 ;⑤用定點整數進行三維計算;⑥用查詢的預先計算結果來處理復雜算 法。


  4.縮短小程序裝入時間 

  真正功能性的小程序本身并不小,這就意味著小程序從Internet 上下載需要花很多時間。隨著小程序的普及,越來越多的Internet頻 帶被用于從各地的服務器向客戶端Web瀏覽器傳送這些小程序,因此響 應時間進一步下降。為了縮短小程序下載和裝入時間,可以采取以下3 種方法。
  ?使執行文件盡量小盡管Internet (TCP協議)可以接受任意長度 的數據流,但負責點對點傳送的網絡設備(例如:路由器)對一次傳送分 組包的上限有嚴格的限制,通常這一限制是2 56的整數倍。因此,當小 程序在網上傳送時,按照上限它被分成若干包,而最后一個包可能只有 幾個字節。這些包是單獨傳送,需要在客戶端重新組裝為原先小程序 執行文件字節流。當最后一個包延遲時,可能要用好幾秒來等待最后 幾個字節到達。唯一的解決辦法就是保持類文件盡量小。開發人員可 以在不影響程序邏輯主體的前提下嘗試下列方案:①刪除查錯代碼;② 縮小String直接量;③選擇Java編譯器優化編譯選項;④刪除用不到的 方法等。
  ?類散保持在可控范圍內幾乎沒有一個小程序是由一個類組成。 通常,開發人員為了實現一個功能較強的小程序需要從標準的Java基 類中派生出若干子類,并對之進行組合。因此,若要使一個小程序運行 ,Java虛擬機就要分別下載并裝入這些類。假如實現中類的數目較多, 下載的時間也就相應較長。我們都知道,下載20個獨立的數據塊比下 載一個相當于20個數據塊之和的大數據塊要花費更多的時間,這是由 于下載每個獨立數據塊都要重新進行網絡聯接,而進行每次聯接都要 花費時間的緣故。因此,開發人員在設計小程序時,類的數目要選擇適 中,即可保證結構層次清楚,又要保證程序精簡,不增加冗余。
  ?縮短小程序初始化時間用戶討厭等待,因此,程序下載后應盡量 縮短初始化時間。假如預處理工作較多,可以用輔助線程先同用戶進 行交互,例如:問候用戶、詢問用戶姓名、顯示進程指示等??傊?讓 用戶"忙起來"。同時,小程序主線程可以繼續在后臺做初始化工作。 有句話請記住:"興奮時時間過得快",充分利用這一現象可以改變用戶 對小程序裝入時間的感覺。
  使用Java開發WWW客戶端應用程序十分方便,技術也很多,本文只 簡單介紹幾種方法和注重事項供大家參考。 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日本精品一区二区三区在线| 欧美高清电影在线看| 亚洲一级黄色片| 91牛牛免费视频| 91高清视频在线免费观看| 少妇高潮久久久久久潘金莲| 不卡伊人av在线播放| 美日韩丰满少妇在线观看| 精品亚洲永久免费精品| 亚洲欧美日韩视频一区| 欧美在线免费看| 91久久在线观看| 久久久精品免费视频| 国产成人小视频在线观看| 亚洲美女性视频| 欧美性猛交xxxx| 91亚洲国产成人久久精品网站| 一本色道久久综合亚洲精品小说| 欧美精品日韩三级| 日韩电影中文字幕在线| 国产suv精品一区二区三区88区| 在线播放亚洲激情| 欧洲成人在线观看| 国色天香2019中文字幕在线观看| 精品日本美女福利在线观看| 九九综合九九综合| 在线观看久久久久久| 国产成人在线播放| 色婷婷av一区二区三区在线观看| 久久久av免费| 午夜精品在线视频| 91精品国产99| 亚洲aaaaaa| 欧美黑人巨大xxx极品| 国产一区二区三区丝袜| 亚洲伊人一本大道中文字幕| 日韩精品久久久久| 日韩av资源在线播放| 日韩av片电影专区| 亚洲欧美成人在线| 在线播放国产一区二区三区| 久久夜精品va视频免费观看| 国产精品一区二区三区久久久| 97国产真实伦对白精彩视频8| 亚洲精品电影网| 日韩成人中文电影| 欧美精品在线免费观看| 欧美黑人性猛交| 91人成网站www| 欧美精品videosex牲欧美| 欧美丝袜一区二区| 亚洲韩国欧洲国产日产av| 亚洲午夜av电影| 国语自产在线不卡| 亚洲欧美一区二区精品久久久| 中国china体内裑精亚洲片| 色婷婷综合久久久久中文字幕1| 亚洲毛茸茸少妇高潮呻吟| 不卡av电影在线观看| 日韩在线中文视频| 69影院欧美专区视频| 亚洲一区999| 精品福利在线视频| 韩国福利视频一区| 人体精品一二三区| 亚洲欧美中文日韩在线v日本| 亚洲sss综合天堂久久| 欧美性生交xxxxxdddd| 国产亚洲欧美日韩一区二区| 国产综合久久久久久| 国产精品白嫩美女在线观看| 精品视频在线播放免| 亚洲mm色国产网站| 国产午夜精品免费一区二区三区| 国产亚洲欧美日韩美女| 日韩免费黄色av| 欧美精品在线免费| 国产成人亚洲综合91| 亚洲黄色av女优在线观看| 国内免费精品永久在线视频| 91精品国产乱码久久久久久久久| 久久99久国产精品黄毛片入口| 不卡在线观看电视剧完整版| 欧美性xxxxxxxxx| 91精品久久久久久久久久久| 日韩精品中文字幕在线播放| 日韩精品一区二区视频| 国产精品欧美亚洲777777| 中文字幕欧美日韩va免费视频| 深夜精品寂寞黄网站在线观看| 国产激情综合五月久久| 欧美黑人一级爽快片淫片高清| 国产欧美日韩高清| 97视频在线观看免费| 国产91色在线|| 国产一区二区三区网站| 国产极品精品在线观看| 欧美夫妻性视频| 亚洲欧美日韩精品久久奇米色影视| 成人av番号网| 亚洲国产精品va在看黑人| 亚洲另类欧美自拍| 久久中文字幕在线| 欧美成人免费va影院高清| 国外成人在线直播| 亚洲精品国产综合区久久久久久久| 国产精品久久久久久久久久久久久| 91亚洲精品在线| 一级做a爰片久久毛片美女图片| 亚洲欧美在线第一页| 免费不卡欧美自拍视频| 国产精品一区二区久久精品| 亚洲精品久久久久中文字幕欢迎你| 91超碰caoporn97人人| 亚洲成年人在线| 成人av在线网址| 精品国产欧美一区二区三区成人| 国产欧美日韩精品丝袜高跟鞋| 91av在线国产| 少妇精69xxtheporn| 久久久久久久久久久久久久久久久久av| 欧美性xxxxhd| 2019亚洲日韩新视频| 午夜欧美不卡精品aaaaa| 伊人青青综合网站| 久久福利视频导航| 国产精品三级在线| 成人免费福利在线| 草民午夜欧美限制a级福利片| 亚洲精品影视在线观看| 亚洲精品中文字幕女同| 中文字幕日韩欧美在线| 亚洲精品国精品久久99热| 久久久国产91| 国产亚洲一区精品| 最近2019中文字幕一页二页| 亚洲综合色激情五月| 亚洲最新av在线网站| 国产精品99久久久久久久久| 久久精品中文字幕一区| 91精品久久久久久久久久久| 欧美高清一级大片| 美女视频黄免费的亚洲男人天堂| www.国产一区| 91九色国产视频| 国产精品久久久久av| 亚洲毛茸茸少妇高潮呻吟| 粗暴蹂躏中文一区二区三区| 激情久久av一区av二区av三区| 爽爽爽爽爽爽爽成人免费观看| 日韩极品精品视频免费观看| 国产精品久久久久免费a∨大胸| 在线播放日韩精品| 亚洲色图50p| 成人网中文字幕| 日韩精品免费在线视频| 国产欧美va欧美va香蕉在线| 亚洲自拍av在线| 欧美最猛黑人xxxx黑人猛叫黄| 一道本无吗dⅴd在线播放一区| 青青a在线精品免费观看| 国产在线观看一区二区三区| 欧美性极品少妇精品网站| 欧美性猛交xxxx|