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:ghqHelloWorld.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)在執行建立的HelloWorld.class 之前,
建立HTML文件
還需建立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文件,該文件中包含對應於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視窗的像素尺寸
。的URL位址。
標誌,瀏覽器將
使用和HTML
檔案相同的URL。
APPLET語句時將
顯示ALT標誌指定的文字訊息
。
或
BOTTOM
。 50像素的空白,在其左和其右各留出25像素的空白:
* NAME 標誌
NAME標誌把指定的名字賦予Applet的當前實例。透過名字相互引用或交換
資訊
。 Applet完成不同的任務是通用性的具體表現
。
,則可以
使該Applet從HTML文件獲取需要捲動的文本資訊。
裡指定參數,格式如下:
PARAM Name="name" Value="Liter"
Java Applet可呼叫getParameter方法取得HTML檔案裡設定的參數值。