java中applet下载,Java Applet概述
課題名稱? ? 第九講 Java Applet概述 教學提示本講介紹掌握Java Applet程序的基本形式、生命周期、Applet標記及Java Applet程序的設計方法和運行環境。教學目的? ? 1. 掌握Java Applet程序的基本形式、生命周期、Applet標記 2. 熟練掌握Java Applet程序的設計方法和運行環境 重點? ? Java Applet程序的設計方法 難點? ? Java生命周期的概念 教學方法案例教學法,任務驅動教學法教學手段? ? 幻燈片與投影示例? ? ?教學內容? 第九講 Java Applet概述? 9. 1什么是Java Applet? Java Applet 是另一類非常重要的Java程序,雖然它的源代碼編輯與字節碼的編譯生成過程與Java Application相同,但它卻不是一類可以獨立運行的程序,相反,它的字節碼文件必須嵌入到另一種HTML語言的文件中,并由負責解釋HTML文件的WWW瀏覽器充當解釋器,來解釋執行Java Applet的字節碼程序。? 9.1.1 一個最簡單的Java Applet? 首先看一個最簡單的Java Applet程序:? 【例9.1】HelloApplet.java? import java.applet.*; //將java.applet 包中的系統類引入本程序? import java.awt.*;//將java.awt包中的系統類引入本程序? public class HelloApplet extends Applet{? public void paint(Graphics screen){? screen.setColor(Color.red);? screen.drawString("你好,Java世界!",2,20);? }? }? 先編譯生成HelloApplet.class文件,然后建立一個網頁文件HelloApplet.html,如下:? ?
我的第一個JavaApplet程序? ? ? 這里將顯示一個applet小程序? ? ? ? 將該html文件放在與class文件相同的目錄下,用支持Java的瀏覽器如IE或Netscape打開,“你好,Java世界!”顯示在屏幕左上角,效果如圖9.1(a)所示。? ? 圖9.1(a)HelloApplet程序在IE瀏覽器中的執行結果? ? ? ?圖9.1(b)HelloApplet程序在小程序查看器中的執行結果? 對于HelloApplet.html文件和編譯生成HelloApplet.class文件,也可以使用Java的小程序查看器appletviewer來測試。在DOS窗口,進入該html文件所在的目錄,鍵入如下命令:? appletviewer HelloApplet.html? 效果如圖9.1(b)所示。? 下面我們分析一下HelloApplet.java程序的結構。? 首先,HelloApplet.java程序的第1、2行利用關鍵字import引入了程序需要用到的兩個系統類。這兩個系統類分別位于不同的系統包中,所以引用時需要指明它們所在的包名。? 第3行聲明了一個名為HelloApplet的用戶自定義類。與Java Application相同,Java Applet程序也是由若干個類定義組成,而且這些類的定義也都是由class關鍵字標志的。但是Java Applet中不需要用main方法,它要求的是程序中有且必須有一個類是系統類Applet的子類,也就是必須有一個類的類頭部分以extends Applet結尾,如:public class HelloApplet extends Applet,表示HelloApplet類是系統類Applet的子類。? 在HelloApplet 類體中定義了一個方法paint。實際上,paint方法是系統類Applet中已經定義好的成員方法,它與其他的一些Applet中的方法一樣,能被WWW瀏覽器識別,并在恰當的時刻自動調用,所以用戶程序定義的Applet子類只需繼承這些方法并按具體需要改寫其內容(這個過程稱為“重載”),就可以使WWW瀏覽器在解釋Java Applet程序時通過自動執行用戶改寫過的成員方法,例如paint方法,來實現用戶程序預期的功能。? 9.1.2 Java Applet的運行方式? 1.運行方式? Java Applet與應用程序的區別在于它們的運行方式不同。應用程序是由Java解釋器通過裝載其主類文件來運行的,程序入口是主類文件中的main方法。而Java Applet是運行在支持Java的瀏覽器上,如Netscape Navigator、Microsoft IE、Opera和Sun的HotJava瀏覽器。? Java Applet也可以使用Java2 SDK中的appletviewer(小程序查看器)來測試。在DOS窗口,進入該html文件所在的目錄,鍵入如下命令:? appletviewer ? 所有的Java Applet程序中都必須有一個系統類Applet的子類。系統類Applet中已經定義了很多的成員域和成員方法,它們規定了Applet如何與執行它的解釋器――WWW瀏覽器配合工作,所以當用戶程序使用Applet的子類時,因為繼承,這個子類將自動擁有父類的有關成員,從而使WWW瀏覽器順利地執行并實現用戶程序定義的功能。? Applet的運行過程可以用圖9.2來表示,首先將編譯好的字節碼文件和編寫好的HTML文件(其中包含字節碼文件名)保存在Web服務器的合適路徑下;當WWW瀏覽器下載此HTML文件并顯示時,它會自動下載HTML中指定的Java Applet字節碼,然后調用內置在瀏覽器中Java解釋器來解釋執行下載到本機的字節碼程序。? ? ? ? 圖9.2 Java Applet執行過程? 2.標記? 標記是HTML標記的一種擴展,用于將小程序放置到Web頁中,并控制其相對于Web頁其他部分的顯示效果。支持Java的瀏覽器使用該標記中的信息來查找并執行編譯后的小程序類文件(.class)。? 所有關于小程序的參數和屬性設置必須位于標記塊和之內(或者)。當用戶使用支持Java的瀏覽器裝載包含小程序的Web頁時,該瀏覽器將從Web服務器下載該小程序,然后使用Java解釋器在用戶的系統上運行它。? 【例9.2】標記塊和之內的參數和屬性設置。? ? ? Example Applet ? ? ? ? ? This program requires a Java-enabled browser, if not, the Applet cannot be viewed.? ? ? ? 這些參數和屬性的含義是:? archive: 小程序運行所需的jar文件。? code: 小程序的主類文件名。? codebase: 相對于class文件的相對地址或絕對URL地址,“.”表明class文件與HTML文件位于相同的文件夾中。? name: Applet內部通信參數的名稱,可以顯示在瀏覽器的狀態欄。? width: 小程序窗口的寬度。? height: 小程序窗口的高度。? hspace: 小程序同周圍文本之間的水平間距(單位為像素)。? vspace: 小程序同周圍文本之間的垂直間距(單位為像素)。? align: 小程序相對于Web頁其他部分的對齊方式,有以下八種取值:Left、Right、TextTop、Top、AbsMiddle、Middle、BaseLine、AbsBottom。? param: Applet運行所需的參數。? 其中,屬性width和height是必不可少的,因為Web瀏覽器需要知道Web頁中的多大空間將用于該小程序,以免在小程序窗口外的區域中繪圖。在最簡單的情況下,標記使用width和height屬性來創建一個大小合適的區域,然后在其中裝載并運行該小程序。? 屬性code和codebase用于指出小程序的主類文件和其他文件的位置。支持Java的瀏覽器從Web服務器下載小程序并試圖運行它時,將使用這些屬性。code指出了小程序的主類文件名(必須使用文件擴展名.class),如果使用code時沒有同時使用codebase,將從小程序所屬的Web頁所在的文件夾中下載類文件。屬性codebase讓瀏覽器在另一個文件夾中查找小程序及其使用的文件,codebase指出了一個文件夾或網站地址,從這些地方可以裝載類和其他文件。例如:? 從Web頁所在的文件夾中裝載Example.class類:? ? ? 從文件夾firstApplet中裝載Example.class類:? ? ? 下面的標記從另一個站點下載Example.class類文件:? ? ? Java存檔文件(JAR文件)是將主類、助手類和其他文件打包成一個文件。不使用jar文件時,對于小程序所需的每個文件(包括助手類、圖像、音頻文件、文本文件等),都需要在Web瀏覽器與包含該文件的服務器之間建立一條連接,用戶需等待較長的時間。通過使用jar文件,瀏覽器只需與服務器建立一條連接,因此可提高下載并運行小程序的速度。? 可在標記和之間包含文本、圖像和其他Web頁元素。當瀏覽器不支持Java時將顯示這些內容,通過這種方式可以告訴人們:因為瀏覽器不支持Java,因此Java Applet沒有被執行。如果不在和之間包含任何內容,則不支持Java的瀏覽器將不會在小程序所在的位置顯示任何內容。? 9.2 Applet的基本用法? 9.2.1 java.Applet包簡介? java.Applet包包括一個類和三個接口:類Applet和接口AppletContext、AppletStub、AudioClip。在設計applet程序時,所有的applet必須繼承Applet類,類Applet提供了小應用程序及其環境之間的標準接口。? 1.類Applet? Applet類的層次結構如下:? java.lang.Object? ? ?+ -- java.awt.Component? ? + -- java.awt.Container? ? ?+ -- java.awt.Panel? ? ?+ -- java.applet.Applet? ? ?2.成員函數介紹? void destroy()方法:由瀏覽器調用,用來回收當前applet及其占用的系統資源。在調用本方法前通常先調用stop()方法。Applet的子類可以通過重寫本方法使applet在被回收之前執行特定的操作。例如使用線程的applet可以通過init()創建線程,通過destroy()方法來殺死線程。? AppletContext getAppletContext()方法:返回當前applet的上下文,使applet可以查詢和影響運行時所處的環境。? String getAppletInfo():返回當前applet的信息,如applet的作者、版本、版權等。? AudioClip getAudioClip(URL url)方法:返回指定URL地址(絕對地址)所提供的AudioClip對象。當applet試圖播放該聲音片斷時,數據被下載。? AudioClip getAudioClip(URL url, String name) 方法:返回指定URL地址所提供的AudioClip對象。參數name指出聲音片斷的相對地址,與參數url提供的基地址組合在一起就是完整的URL地址。? URL getCodeBase()方法:返回當前applet的.class文件的URL地址。? URL getDocumentBase()方法:返回裝載當前applet的HTML文件的URL地址。? Image getImage(URL url)方法:返回URL地址(絕對地址)指定的圖形對象。當applet試圖顯示該對象時,數據將被下載。? Image getImage(URL url, String name) 方法:獲取并返回可以被顯示在屏幕上的圖像對象。參數url是基地址,name是圖像的相對地址,兩者結合構成完整的URL地址。? String getParameter(String name) 方法:返回HTML文件中指定參數所對應的值。? String[][] getParameterInfo()方法:返回當前applet參數信息的字符串二位數組。字符串二位數組的每個基本元素都包括三個字符串:名稱、類型以及描述信息。? public void init()方法:由瀏覽器調用,用來通知applet已經被裝載到系統中。Applet的子類可以通過重寫本方法使applet完成初始化工作,包括創建所需要的對象、設置初始狀態、裝載圖像或字體、設置參數等。例如使用線程的applet可以通過init()創建線程,通過destroy()方法來殺死線程。? Boolean isActive()方法:判斷當前applet是否出于活動狀態。隨著start()方法的調用applet將被標記為活動狀態;當stop()方法被調用后,applet將立即轉為非活動狀態。? void play(URL url) 方法:根據參數提供的URL地址播放聲音片斷。若無法找到該聲音片斷,則本方法將不做任何事情。? void play(URL url, String name) 方法:根據參數提供的URL地址播放聲音片斷。若無法找到該聲音片斷,則本方法將不做任何事情。url指出基地址,name是相對地址,兩者結合構成完整的URL地址。? void resize(Dimension d)方法:根據新尺寸調整applet的大小。? void resize(int width, int height) 方法:根據長、寬調整當前applet的大小。? public final void setStub(AppletStub stub) 方法:設置當前applet的存根,它由系統自動調用。? void showStatus(String msg) 方法:在狀態窗口中顯示參數字符串的內容。許多瀏覽器提供了狀態窗口,使用戶可以即時獲取當前狀態信息。? public void start()方法:由瀏覽器調用,用來通知applet可以開始執行。當調用init()方法后以及每次applet被重新訪問時調用本方法。Applet的子類可以通過重寫本方法使applet每次被訪問時執行特定的操作。例如,對于一個完成動畫功能的applet可以使用start()方法來重新開始動畫演示,使用stop()方法將動畫線程掛起。? public void stop()方法:由瀏覽器調用,用來通知applet停止執行。當用戶離開Web主頁或調用destroy()方法前調用本方法。Applet的子類可以通過重寫本方法使applet每次停止時執行特定的操所。例如,對于一個完成動畫功能的applet可以使用start()方法來重新開始動畫演示,使用stop()方法將動畫線程掛起。? 9.2.2 Java Applet的方法與生命周期? 在一個Applet的生命周期中,共有4種狀態和4個方法:init()、start()、stop()和destroy()。? ? ? ?圖9.3 Applet生命周期與主要方法? 初始化方法init()在小程序被裝載時發生,該方法在Applet的生命周期中只執行一次。初始化包括創建小程序所需要的對象、設置初始狀態、裝載圖像和字體、設置某些參數。初始化小程序時,一項很重要的工作是設置背景窗口的顏色,用setBackground(Color color)。? 小程序初始化后,瀏覽器將調用start()方法啟動程序。小程序被終止后,也可以將它重新啟動。例如,如果用戶單擊超鏈接進入其他頁面,則小程序將停止;當用戶回到包含該小程序的頁面時,它會被再次啟動。在小程序的生命期中初始化只發生一次,但可以啟動多次。? 加入start()方法中的功能可能是啟動一個線程來控制小程序,向助手對象發送消息或以某種方式命令小程序開始運行。因為Applet是Panel的子類,所以經常會調用paint()方法來繪制圖形,當applet所在的瀏覽器空間發生變化時,paint()也會被調用。? 終止和啟動是成對出現的。用戶離開包含小程序的頁面或小程序調用stop()方法時,該小程序將終止。默認情況下,即使在用戶離開了頁面后,小程序啟動的線程仍將繼續執行。通過覆蓋stop()方法可以將線程掛起,并在用戶返回小程序所在的頁面時重新啟動它們。? 當卸載applet時,瀏覽器調用destroy()方法終止,使小程序釋放其鎖定的資源。通常用戶自己不需覆蓋destroy(),除非有特殊的資源需要釋放,如小程序創建的線程。因為Java有一個自動的無用單元收集器,用于管理內存。當程序使用完資源后,收集器將收回這些資源使用的內存。? 另外一個重要的方法是繪圖方法paint(),它不是Applet類里定義的方法,而是繼承自java.awt.Container類中的paint方法。繪圖指的是小程序如何在屏幕上顯示東西,這些可以是文本、幾何圖形或圖像。每當小程序的窗口需要顯示或重新顯示時,該方法都將被調用。? 與上述四個方法不同,paint()需要接受一個參數:Graphics類的實例。該對象被瀏覽器創建,并被傳遞給paint();該對象表示被繪制的區域,即小程序窗口。每當小程序窗口需要重新繪制時,包含小程序的環境(通常是Web瀏覽器)將自動調用paint()方法;要在小程序中請求重新繪制窗口,可以調用小程序的repaint()方法,無參數。? 【例9.3】用輸出相應字符串的方法,指示出Applet生命周期中init()、start()、stop()、destroy()方法的執行時間。? import java.awt.*;? import java.applet.*;? public class AppletLifeCycle extends Applet? {String status = "";//成員變量? public void init()//創建時調用此方法? {? status += "Call init() ->";? }? public void start()//啟動時調用此方法? {? status+="Call start() ->";? }? public void stop()//停止時調用此方法? {? status+="Call stop() ->";? }? public void destroy()//退出時調用此方法? {? status+="Call destory() ->";? }? public void paint(Graphics g)//被repaint()調用的方法? {? g.drawString(status,20,40);//繪制字符串? }? }? Html文件設計如下:? ? ? ? ? 首次運行顯示結果如圖9.4(a),init()方法和start()方法被調用,當停止Applet后重新運行,可以發現stop()方法和destroy()方法被調用過。重新運行Applet時,顯示結果如圖9.4(b)所示。? 注意:為了停止并重新運行Applet,可將窗口最小化后在再最大化,即要刷新窗口。可使用控制菜單,先選擇“停止”,再選擇“重新啟動”。? ? ? 9.4(a)運行Applet的界面? ? ? ? ?9.4(b)重新運行Applet的界面? 9.3 Java Applet的參數存取? Java Applet從所在的HTML頁面讀取參數。? 在包含小程序的HTML文件中,使用放置于和之間的標記來指出每個參數。該標記有兩個用于指定參數名稱和值的屬性:name和value。如:? ? ? ? ? This is a java applet game.? ? 上述代碼定義了小程序Game的三個參數:一個名為font,值為TimesRoman;另一個名為color,值為#FF0000(以#開始的十六進制字符串用來表示顏色,該值代表紅色);最后一個名為size,值為24。? 小程序被裝載時,參數將被傳遞給小程序。在小程序的init()方法中,可以使用方法getParameter()來獲得這些參數的值,所有的參數值都作為字符串被返回。如:? String fontName = getParameter("font" );? String background = getParameter("color");? String fontSize = getParameter("size");? 中指定的參數與gerParameter()中的參數名必須相同(包括大小寫)。如果參數沒有在HTML文件中指定,則gerParameter()返回null。大多數情況下,需要檢測null,并提供合理的默認值,如下:? if ( fontName = = null )? fontName="TimesRoman";? 由于gerParameter()返回的是字符串,如果要求參數是其他對象或類型,必須自己進行轉換。如要得到int型的size變量,可采用如下代碼:? int theSize;? String fontSize = getParameter("size");? if (fontSize = =null )? theSize = 12;? else? the Size=Integer.parseInt(fontSize);? 【例9.4】把HTML文件中設置的兩組數據(“Yaoming”,30)和(“Shark”,40)傳遞給Applet,并在Applet界面中顯示。? HTML文件設計如下:? ? Applet Parameter Setting? ? ? ?? ? ? ? ? 在該HTML文件中,指定要運行的Applet為AppletParameter.class,圖形界面的顯示寬度為280像素,高度為100像素,如果不支持Applet,運行時顯示“Browser does not support Java Applet”。用屬性param設置了兩個參數,一個參數的name為“Yaoming”,數值為30;另一個參數的name為“Shark”,數值為40。? 與此相應地,Java Applet程序AppletParameter.java設計如下:? import java.awt.*;? import java.applet.*;? public class AppletParameters extends Applet? {? String score1, score2;? String message1, message2;? int s1, s2;? public void init()//啟動瀏覽器時調用? {? score1 = getParameter("Yaoming");? //取得Applet所嵌入的HTML文件的參數Yaoming的數值? score2 = getParameter("Shark");? //取得Applet所嵌入的HTML文件的參數Shark的數值? s1= Integer.parseInt(score1);//將字符串score1轉換成整數? s2= Integer.parseInt(score2);//將字符串score2轉換成整數? message1 = "Yaoming scores is:"+score1;//構造字符串message1? message2 = "Shark scores is:"+score2;//構造字符串message2? }? public void paint(Graphics g)? {? g.drawString(message1,20,40);//在(20,40)位置繪制message1? g.drawString(message2,20,55); //在(20,55)位置繪制message2? g.fillRect(150,35,s1,10); //在(150,35)位置繪制寬為s1、高為10的實心矩形? g.fillRect(150,50,s2,10); //在(150,50)位置繪制寬為s2、高為10的實心矩形? }? }? 程序的運行結果如圖9.5所示。? ? 圖9.5 數據傳遞的運行結果? ? ? ? 小結? Java Applet是嵌入到HTML主頁中,由兼容Java語言的瀏覽器執行的小程序。與Java Application不同,Java Applet中不需要用main方法,它要求的是程序中有且必須有一個類是系統類Applet的子類,運行時由瀏覽器自動下載HTML中指定的Java Applet字節碼,然后調用內置在瀏覽器中Java解釋器來解釋執行下載到本機的字節碼程序。? Applet嵌入HTML頁面中必須使用標記,標記是HTML標記的一種擴展,用于將小程序放置到Web頁中,并控制其相對于Web頁其他部分的顯示效果。主要使用的標記包括code、width和height,分別用來指明Applet小程序的主類文件的位置、Applet小程序的寬度和高度。? 在一個Applet的生命周期中,共有4種狀態和4個方法:init()、start()、stop()和destroy()。初始化方法init()在小程序被裝載時發生,該方法在Applet的生命周期中只執行一次。小程序初始化后,瀏覽器將調用start()方法啟動程序。小程序被終止后,也可以將它重新啟動。用戶離開包含小程序的頁面或小程序調用stop()方法時,該小程序將終止。當卸載applet時,瀏覽器調用destroy()方法終止,使小程序釋放其鎖定的資源。? Java Applet可以從所在的HTML頁面讀取參數,在包含小程序的HTML文件中,使用放置于和之間的標記來指出每個參數,而在Java Applet程序中使用方法getParameter()來獲得這些參數的值,所有的參數值都作為字符串被返回。總結
以上是生活随笔為你收集整理的java中applet下载,Java Applet概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java面向对象练习题之银行卡类和用户类
- 下一篇: gae java,适用于GAE的Java