Java Applet之編程講解大全 – JAVA編程語言程序開發技術文章

一、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技術難以實現的。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *