一個簡單的Applet程式
Java Applet 是用Java 語言編寫的一些小應用程式,這些程式是直接嵌入到頁面中,由支援Java的瀏覽器(IE 或 Nescape)解釋執行能夠產生特殊效果的程式。它可以大大提高Web頁面的互動能力和動態執行能力。包含Applet的網頁被稱為Java-powered頁,可以稱其為Java支援的網頁。
當用戶訪問這樣的網頁時,Applet被下載到使用者的計算機上執行,但前提是使用者使用的是支援Java的網路瀏覽器。由於Applet是在使用者的計算機上執行的,所以它的執行速度不受網路頻寬或者Modem存取速度的限制,使用者可以更好地欣賞網頁上Applet產生的多媒體效果。
Applet 小應用程式的實現主要依靠java.applet 包中的Applet類。與一般的應用程式不同,Applet應用程式必須嵌入在HTML頁面中,才能得到解釋執行;同時Applet可以從Web頁面中獲得引數,並和Web頁面進行互動。
含有Applet的網頁的HTML檔案程式碼中必須帶有<applet>和</applet>這樣一對標記,當支援Java的網路瀏覽器遇到這對標記時,就將下載相應的小程式程式碼並在本地計算機上執行該Applet小程式。
Applet是一種Java的小程式,它通過使用該Applet的HTML檔案,由支援Java的網頁瀏覽器下載執行。也可以通過java開發工具的
appletviewer來執行。Applet 程式離不開使用它的HTML檔案。這個HTML檔案中關於Applet的資訊至少應包含以下三點:
1)位元組碼檔名(編譯後的Java檔案,以.class為字尾)
2)位元組碼檔案的地址
3)在網頁上顯示Applet的方式。
一個HTML檔案增加Applet有關的內容只是使網頁更加富有生氣,如新增聲音、動畫等這些吸引人的特徵,它並不會改變HTML檔案中與Applet無關的元素。
(一) Applet程式開發步驟
Applet程式開發主要步驟如下:
1)選用EDIT或Windows Notepad等工具作為編輯器建立Java Applet源程式。
2)把Applet的源程式轉換為位元組碼檔案。
3)編制使用class 的HTML檔案。在HTML檔案內放入必要的<APPLET>語句。
下面舉一個最簡單的HelloWorld 例子來說明Applet程式的開發過程:
(1) 編輯Applet 的java原始檔
建立資料夾C:/ghq,在該資料夾下建立 HelloWorld.java
檔案的原始碼如下:
import java.awt.*; import java.applet.*; public class HelloWorld extends Applet //繼承Appelet類,這是Appelet Java程式的特點 { public void paint(Graphics g ) { g.drawString("Hello World!",5,35); } } |
儲存上述程式在C:/ghq/HelloWorld.java檔案裡。
(2)編譯Applet
編譯HelloWorld.java原始檔可使用如下JDK命令:
C:/ghq/>javac HelloWorld.java<Enter> |
注意:如果編寫的源程式違反了Java程式語言的語法規則,Java編譯器將在螢幕上顯示語法錯誤提示資訊。原始檔中必須不含任何語法錯誤,Java編譯器才能成功地把源程式轉換為appletviewer和瀏覽器能夠執行的位元組碼程式。
成功地編譯Java applet之後生成響應的位元組碼檔案HelloWorld.class的檔案。用資源管理器或DIR命令列出目錄列表,將會發現目錄C:/ghq中多了一個名為HelloWorld.class的檔案。
(3)建立HTML檔案
在執行建立的HelloWorld.class
之前,還需建立一個HTML檔案,appletviewer或瀏覽器將通過該檔案訪問建立的Applet。為執行HelloWorld.class,
需要建立包含如下HTML語句的名為HelloWorld.html的檔案。
<HTML> <TITLE>HelloWorld! Applet</TITLE> <APPLET CODE="JavaWorld.class" WIDTH=200 HEIGHT=100> </APPLET> </HTML> |
本例中,<APPLET>語句指明該Applet位元組碼類檔名和以畫素為單位的視窗的尺寸。雖然這裡HTML檔案使用的檔名為
HelloWorld.HTML,它對應於HelloWorld.java的名字,但這種對應關係不是必須的,可以用其他的任何名字(比如說
Ghq.HTML)命名該HTML檔案。但是使檔名保持一種對應關係可給檔案的管理帶來方便。
(4)執行 HelloWorld.html
如果用appletviewer執行HelloWorld.html,需輸入如下的命令列:
C:/ghq/>appletviewer JavaWorld.html<ENTER> |
可以看出,該命令啟動了appletviewer並指明瞭HTML檔案,該HTML檔案中包含對應於HelloWorld 的<APPLET>語句。
如果用瀏覽器執行HelloWorld Applet,需在瀏覽器的位址列中輸入HTML檔案URL地址。
至此,一個Applet程式的開發執行整個過程結束了(包括java原始檔、編譯的class檔案、html檔案以及用appletviewer或用瀏覽器執行)。
(二) Applet類
Applet類是所有Applet應用的基類,所有的Java小應用程式都必須繼承該類。如下所示。
import java. applet.*; public class OurApplet extends Applet { ...... ...... } |
Applet類的建構函式只有一種,即:public Applet()
Applet實現了很多基本的方法,下面列出了Applet類中常用方法和用途。
public final void setStub(AppletStub stub) //設定Applet的stub.stub是Java和C之間轉換引數並返回值的程式碼位,它是由系統自動設定的。 public boolean isActive();// 判斷一個Applet是否處於活動狀態。 public URL getDocumentBase();// 檢索表示該Applet執行的檔案目錄的物件。 public URL getCodeBase();// 獲取該Applet 程式碼的URL地址。 public String getParameter(String name);// 獲取該Applet 由name指定引數的值。 public AppletContext getAppletContext();// 返回瀏覽器或小應用程式觀察器。 public void resize(int width,int height);// 調整Applet執行的視窗尺寸。 public void resize(Dimension d);// 調整Applet執行的視窗尺寸。 public void showStatus(String msg);// 在瀏覽器的狀態條中顯示指定的資訊。 public Image getImage(URL url); // 按url指定的地址裝入圖象。 public Image getImage(URL url,String name);// 按url指定的地址和檔名載入影象。 public AudioClip getAudioClip(URL url);// 按url指定的地址獲取聲音檔案。 public AudioClip getAudioClip(URL url, String name);// 按url指定的地址和檔名獲取聲音。 public String getAppletInfo();// 返回Applet應用有關的作者、版本和版權方面的資訊; public String[][] getParameterInfo(); // 返回描述Applet引數的字串陣列,該陣列通常包含三個字串: 引數名、該引數所需值的型別和該引數的說明。 public void play(URL url);// 載入並播放一個url指定的音訊剪輯。 public void destroy();//撤消Applet及其所佔用的資源。若該Applet是活動的,則先終止該Applet的執行。 |
(1) Applet執行狀態控制基本方法
Applet類中的四種基本方法用來控制其執行狀態:init()、start()、stop()、destroy()
init()方法
這個方法主要是為Applet的正常執行做一些初始化工作。當一個Applet被系統呼叫時,系統首先呼叫的就是該方法。通常可以在該方法中完成從網頁向Applet傳遞引數,新增使用者介面的基本元件等操作。
start()方法
系統在呼叫完init()方法之後,將自動呼叫start()方法。而且,每當使用者離開包含該Applet的主頁後又再返回時,系統又會再執行一遍
start()方法。這就意味著start()方法可以被多次執行,而不像init()方法。因此,可把只希望執行一遍的程式碼放在init()方法中。可
以在start()方法中開始一個執行緒,如繼續一個動畫、聲音等。
stop()方法
這個方法在使用者離開
Applet所在頁面時執行,因此,它也是可以被多次執行的。它使你可以在使用者並不注意Applet的時候,停止一些耗用系統資源的工作以免影響系統的運
行速度,且並不需要人為地去呼叫該方法。如果Applet中不包含動畫、聲音等程式,通常也不必實現該方法。
destroy()方法
與物件的finalize()方法不同,Java在瀏覽器關閉的時候才呼叫該方法。Applet是嵌在HTML檔案中的,所以destroty()方法
不關心何時Applet被關閉,它在瀏覽器關閉的時候自動執行。在destroy()方法中一般可以要求收回佔用的非記憶體獨立資源。(如果在Applet
仍在執行時瀏覽器被關閉,系統將先執行stop()方法,再執行destroy()方法。
(2) Applet應用的有關引數說明
利用Applet來接收從HTML中傳遞過來的引數,下面對這些引數作一簡單說明:
* CODE標誌
CODE標誌指定Applet的類名;WIDTH和HEIGHT標誌指定Applet視窗的畫素尺寸。在APPLET語句裡還可使用其他一些標誌。
* CODEBASE 標誌
CODEBASE標誌指定Applet的URL地址。Applet的通用資源定位地址URL,它可以是絕對地址
,如www.sun.com。也可以是相對於當前HTML所在目錄的相對地址,如/AppletPath/Name。如果HTML檔案不指定
CODEBASE 標誌,瀏覽器將使用和HTML檔案相同的URL。
* ALT 標誌
雖然Java在WWW上很受歡迎,但並非所有瀏覽器都對其提供支援。如果某瀏覽器無法執行Java Applet,那麼它在遇到APPLET語句時將顯示ALT標誌指定的文字資訊。
* ALIGN 標誌
ALIGN標誌可用來控制把Applet視窗顯示在HTML文件視窗的什麼位置。與HTML<LMG>語句一樣,ALIGN標誌指定的值可以是TOP、MIDDLE或BOTTOM。
* VSPACE與HSPACE 標誌
VSPACE和HSPACE標誌指定瀏覽器顯示在Applet視窗周圍的水平和豎直空白條的尺寸,單位為畫素。如下例使用該標誌在Applet視窗之上和之下各留出50畫素的空白,在其左和其右各留出25畫素的空白:
* NAME 標誌
NAME標誌把指定的名字賦予Applet的當前例項。當瀏覽器同時執行兩個或多個Applet時,各Applet可通過名字相互引用或交換資訊。如果忽略NAME標誌,Applet的名字將對應於其類名。
* PARAM 標誌
通用性是程式設計所追求的目標之一。使使用者或者程式設計師能很方便地使用同一個Applet完成不同的任務是通用性的具體表現。從HTML檔案獲取資訊是提高Applet通用性的一條有效途徑。
假設編制了一個把某公司的名字在螢幕上捲動的Applet。為了使該Applet更加通用,則可以使該Applet從HTML檔案獲取需要捲動的文字資訊。這樣,若想顯示另一個公司的名字,用不著修改Java Applet本身,只需修改HTML檔案即可。
PARAM 標誌可用來在HTML檔案裡指定引數,格式如下所示:
PARAM Name="name" Value="Liter"
Java Applet可呼叫getParameter方法獲取HTML檔案裡設定的引數值。