Applet可以翻譯為小應(yīng)用程序,Java Applet就是用Java語言編寫的這樣的一些小應(yīng)用程序,它們可以直接嵌入到網(wǎng)頁或者其他特定的容器中,并能夠產(chǎn)生特殊的效果。
Applet必須運行于某個特定的“容器”,這個容器可以是瀏覽器本身,也可以是通過各種插件,或者包括支持Applet的移動設(shè)備在內(nèi)的其他各種程序來運行。與一般的Java應(yīng)用程序不同,Applet不是通過main方法來運行的。在運行時Applet通常會與用戶進行互動,顯示動態(tài)的畫面,并且還會遵循嚴(yán)格的安全檢查,阻止?jié)撛诘牟话踩蛩兀ɡ绺鶕?jù)安全策略,限制Applet對客戶端文件系統(tǒng)的訪問)。
在Java Applet中,可以實現(xiàn)圖形繪制,字體和顏色控制,動畫和聲音的插入,人機交互及網(wǎng)絡(luò)交流等功能。 Applet還提供了名為抽象窗口工具箱(Abstract Window Toolkit, AWT)的窗口環(huán)境開發(fā)工具。 AWT利用用戶計算機的GUI元素,可以建立標(biāo)準(zhǔn)的圖形用戶界面,如窗口、按鈕、滾動條等等。目前,在網(wǎng)絡(luò)上有非常多的Applet范例來生動地展現(xiàn)這些功能,讀者可以去調(diào)閱相應(yīng)的網(wǎng)頁以觀看它們的效果。

init()、start()、stop()、destroy()方法都是Applet類中已經(jīng)定義的方法,
系統(tǒng)根據(jù)上述規(guī)則自動執(zhí)行Applet的生命周期。
用戶Applet中也可重新定義這些方法(重載)。
例3.1 了解Applet的生命周期。
首先執(zhí)行init()方法,構(gòu)造了Car類的實例Car1,并計算了price1和mycar1。
然后執(zhí)行start()方法,計算了price2。
然后執(zhí)行paint()方法,在頁面上顯示Price1和price2的信息。
四、Applet的工作原理
含有Applet的網(wǎng)頁的HTML文件代碼中部帶有 和這樣一對標(biāo)記,當(dāng)支持Java的網(wǎng)絡(luò)瀏覽器遇到這對標(biāo)記時,就將下載相應(yīng)的小應(yīng)用程序代碼并在本地計算機上執(zhí)行該Applet。
例2.1帶有一個Applet的主頁
(html>
Welcome to my homepage!
This is an example homepage, you can see an applet in it。
上面這個例子就是一個簡單主頁的HTML文件代碼。代碼第五行中的
,是為了確保Applet出現(xiàn)在新的一行,也就是說,<P>的作用象一個回車符號,若沒有它, Applet將會緊接著上一行的最后一個單詞出現(xiàn)。代碼第六、七兩行是關(guān)于Applet的一些參數(shù)。其中第六行是必需的Applet參數(shù),定義了編譯后的包含Applet字節(jié)碼的文件名,后綴通常為“.class”;和以象素為單位的Applet的初始寬度與高度。第七行則是附加的Applet參數(shù),它由一個分離的<param>標(biāo)記來指定其后的名稱和值,在這里是img的值為“example.gif’,它代表了一個圖形文件名。
Applet的下載與圖形文件一樣需要一定的時間,若干秒后它才能在屏幕上顯示出來。等待的時間則取決于Applet的大小和用戶的網(wǎng)絡(luò)連接的速度。一旦下載以后,它便和本地計算機上的程序以相同的速度運行了。
Applet在用戶的計算機上執(zhí)行時,還可以下載其它的資源,如聲音文件、圖像文件或更多的Java代碼,有些Applet還允許用戶進行交互式操作。但這需要重復(fù)的鏈接與下載,因此速度很慢,這是一個亟待解決的問題,可以想到的一個好辦法是采用類似高速緩存的技術(shù),將每次下載的文件都臨時保存在用戶的硬盤上,雖然第一次使用時花的時間比較多,但當(dāng)再次使用時,只需直接從硬盤上讀取文件而無需再與Internet連接,便可以大大提高性能了。
五、從哪里得到Applet
自從Java日益流行之后,世界各地的愛好者們便不斷創(chuàng)造出各種各樣的Applet。這里列出了幾個較大的Applet收集站,讀者可以去逛一逛,看看這些Applet的效果如何,相信會使人流連忘返的。
http://www.gamelan.com
這是Intemet上最負(fù)盛名的Applet收集站,它按照小應(yīng)用程序的用途加以分類,并列出了它們的說明、功能和程序代碼,其規(guī)模和種類之多,令人嘆為觀止。
http://www.jars.com/
這個站點的特色是對它收集的小應(yīng)用程序都加以評分,JARS是小應(yīng)用程序評價服務(wù)(Java Applet Rating Services)的簡稱。許多Java開發(fā)者均以能獲得其好評為榮。
http://www.yahoo.com/Computers_and_Internet/Languages/Applet/
這個URL可真夠長的!這是Yahoo公司提供的小應(yīng)用程序目錄,收集的數(shù)量雖然稍遜于Gamelan,但也很可觀了。]
http://home.netscape.com/comprod/products/navigator/version_2.0 /java_applets/
這是網(wǎng)景公司提供的小應(yīng)用程序演示網(wǎng)頁,同時也提供一些Java信息。
http://java.wiwi.uni_frankfurt.de/
這是一個小應(yīng)用程序的信息站點,提供了許多實用信息,讀者可以借助這里的數(shù)據(jù)庫,查詢自己感興趣的小應(yīng)用程序的相關(guān)信息。
六、Applet事件響應(yīng)
Java的AWT庫允許你把用戶界面建立在Java applet中。AWT庫包含有所有的用于建立簡單界面所需要的控制:按鈕、編輯框、檢查框等等。
import java.awt.*;
import java.applet.*;
public class AppletEvent extends Applet
{
int x, y ;
Button b ;
Color clr ;
在該applet構(gòu)造函數(shù)中,代碼初始化了變量x,y,clr,建立了一個新的顯示“你就按著玩兒吧!”按鈕控制,然后把按鈕添加到窗體中。
public AppletEvent()
{
y = 40 ;
x = 100 ;
clr = Color.red ;
b = new Button("你就按著玩兒吧!");
add("Center", b);
}
窗口還包含有用paint方法繪制的字符。
public void paint(Graphics g)
{
g.setColor(Color.red);
g.setFont(new Font("Helvetica", Font.PLAIN, 24));
g.drawString("InofCD歡迎您!", x, y);
}
在applet類中添加事件處理函數(shù)。也可以從按鈕的基類繼承一新的按鈕類,然后在那里處理事件。在該applet中的“action”方法選擇applet的事件流。當(dāng)每個事件流到達(dá)時,它檢驗其是否來自Button對象。如果是,它會增加y和減少x并使該applet重繪自己。ev.arg屬性傳遞了來自被單擊按鈕的標(biāo)簽,并把它與所按的按鈕的標(biāo)簽進行比較。
public boolean action(Event ev, Object arg)
{
if (ev.target instanceof Button)
{
y+= 10 ;
x = x- 10 ;
if (y>=250) y= 10 ;
if (x<=0) x= 100 ;
repaint();
return true;
}
return false;
}
}
////////////////////////////////////////////////////////
Applet與Swing的比較哦
Java Applet 是用 Java 語言編寫的,包含在網(wǎng)頁里的“小 應(yīng)用程序”。通常被放在 Web 服務(wù)器。當(dāng)有人上網(wǎng)瀏覽時,Applet 隨網(wǎng)頁一起 下載到客戶端的瀏覽器中,并借助瀏覽器中的 Java 虛擬機(JVM)運行工作。
AWT是Java中最可視的一部分API,遺憾的是AWT設(shè)計的嚴(yán)重缺陷,不能滿足發(fā)展的需要,Swing技術(shù)的推出,為Java GUI編程提供了強大豐富的API和靈活的結(jié)構(gòu)設(shè)計,并在AWT基礎(chǔ)上,提供了替代AWT重量組件的輕量組件。