1. 程式人生 > >Java Applet 講解

Java Applet 講解

一、Java Applet的執行原理和生命週期 
        1.Applet被嵌入到HTML頁面中,並由applet的容器(appletviewer或者Web瀏覽器)執行. 

        2.Applet的執行由瀏覽器控制,不由Applet中的程式碼控制.當瀏覽器載入包含由Applet的Web頁面時,它將生成一個 Applet類的物件,然後利用  Applet類物件的五個public的void方法控制Applet的執行,這五個方法如下:init,start,paint,stop,destory; 

        3.Applet有5個public的void方法(Applet的生命週期): 

        init() 
        啟動Applet,瀏覽器總是呼叫Applet類的預設構造器生成物件,然後呼叫init()方法經行初始化.一般在這個方法中生成Applet執行所需的物件並初始化Applet類的所有資料成員. 
        start() 
        由瀏覽器呼叫.啟動或者重新啟動Applet.當Applet第一此啟動時,start方法將緊跟init()方法後被瀏覽器呼叫.如果使用者離開當前的 HTML頁面後,在重新返回到當前HTML頁面時,start()方法也會呼叫.start()方法一般用來啟動applet需要的人和附加執行緒 
        paint(Graphics g) 

        在init()方法執行結束,start()方法啟動之後,就呼叫此方法畫圖.另外,每次需要重新繪製Applet時,也將呼叫此方法.本方法的典型應用,包括是使用Applet容器傳遞給paint()方法Graphics物件g畫圖. 
        stop() 
        當用戶離開包含該Applet的HTML頁面時,瀏覽器呼叫此方法.stop方法被呼叫後,將立即停止所有在start()方法中啟動的操作. 
        destory() 
        在終止Applet執行時,呼叫destory()方法,以便釋放Applet佔用的,由本地作業系統管理的任何系統資源.此方法執行之前,總是先呼叫stop()方法. 


二、Java Applet程式設計 
        1.paint方法中的Graphics物件g的建立由Applet容器(appletviewer或者Web瀏覽器)負責. 

        2.在paint(Graphics g)方法中,第一句常寫上super.paint(g),用來呼叫父類Applet的paint方法.一般情況下沒有該語句也可以執行,但在一個擁有眾多繪圖元件和GUI元件的複雜Applet中,忽略該語句可能導致嚴重的錯誤.所以,在編寫Applet程式的時候,一定在paint方法的的一行設定這條語句,這是一個很好的程式設計習慣. 
        import java.awt.Graphics; 
        import javax.swing.JApplet; 
        public class DrawMultiStringApplet2 extends JApplet{ 
                        // 在applet上繪製文字 
                        public void paint(Graphics g){ 
                                        super.paint(g); 
                                        g.drawString("Java TM Applet", 25, 25); 
                        } 
        } 
        3.Java座標系的原點在左上角,以畫素為單位.畫素是計算機螢幕上最小的顯示單位. 

        4.在Java中繪製文字的時候,加入" "換行符是不能換行的,有時會顯示出一個黑框表示未知字元,或者乾脆顯示不出來. 
        5.Image類是一個抽象類,所以?Applet不能直接建立Image類的物件,Applet必須呼叫一個方法,讓Applet容器載入並返回程式要使用的Inmage類的物件.JApplet的超類Applet提供了一個名為getImage的方法,該方法將Image載入到Applet 中,方法接收兩個引數---影象檔案的位置和檔名.例如;logoJPG = getImage(getDocumentBase(), "logo.jpg"); 

        6.repaint()方法被呼叫的時候,需要清除整個背景,然後才呼叫paint方法顯示畫畫.這樣在清除背景河繪製圖像的短暫時間間隔內被使用者看見的就是閃爍.下面的兩種方法可以明顯地消除或者減弱閃爍: 
        過載update()方法 
        當AWT接受到Applet重新繪製的請求的時,呼叫Applet的update方法.預設情況下,update方法清除Applet的背景,然後呼叫 paint方法.過載update方法,就可以將以前在paint方法中繪圖程式碼包含在Applet方法中,從而避免每次重新繪製試將整個區域清除. 
        雙緩衝技術 
        雙緩衝技術在很多動畫Applet中被採用.主要原理是建立一幅後臺影象,將每一幀畫入影象,然後呼叫drawImage方法,將整個後臺影象一次畫到螢幕上去.這種方法的優點在於大部分繪製是在後臺進行的.將後臺繪製的影象一次繪製到螢幕上.在建立後臺影象前,首先通過呼叫createImage方法生成合適的後臺緩衝區,然後獲得在緩衝區的繪圖環境(即Graphics類物件). 

        總結: 綜上所述,改善畫圖的思路是:不直接在paint方法中呼叫各種繪製方法,而是採用過載update方 法及雙緩衝技術,生成一個影象的緩衝區,獲得該緩衝區中的繪圖環境後,將該繪圖環境讀入記憶體.paint方法不再負責影象的繪製工作,即paint方法不再裝入任何的影象繪製程式碼.我們在paint方法中,直接呼叫update方法,在記憶體緩衝區的繪圖環境下進行影象的繪製工作,當所有的影象繪製工作完成後,最後將緩衝區的內容一次性地寫入Applet 並在Applet視窗直接顯示出來.這種方法很巧妙地解決了影象丟失河閃爍的問題. 

三、Java Applet的深入學習 
        學習Java Applet資料實在太容易獲得了,在你安裝了JDK後,在JDK裡面有個demo目錄,裡面有Applet精品原始碼,個個堪稱經典,執行這些 Applet程式碼,你會發現Applet的功能是如此的強大,實現三位的圖形,豐富多彩的動畫,時鐘等等。 

四、Applet的應用領域 
        現在,隨著Flash的火爆流行,Applet已經淡出了實現豐富多彩網頁動畫舞臺。現在Applet一般應用於複雜動態的Web應圖形領域、人機互動等等。比如可以用Applet實現股票程式碼的動態曲線繪製,展示在頁面中,還可以用Applet做一些基於瀏覽器的複雜實時web監控系統系統,比如要通過 internate或者intranet實現對工廠機器運轉引數的檢測等等,這些都是其他web技術難以實現的。