考慮到你要完成的任務,一個applet,甚至幾個獨立的applet,有時可能都不夠。還好,applet之間可以通訊,通過協(xié)作它們可以完成一些更復雜的任務。一組協(xié)作的applet所能產(chǎn)生的效能使單個applet所不能媲美的。
Applet之間的通訊可以通過傳統(tǒng)方法實現(xiàn):applet可以互相調用對方的成員方法或者通過socket或數(shù)據(jù)流通訊。事實上,applet間互相查找的途徑有很多,每一種方法都有自身的優(yōu)缺點。本文將討論四種通訊機制,并給出一個較為復雜的例子,在這個例子中我們將使用其中一種通訊機制。
Java api 本身就有用來支持applet程序間協(xié)作的特性:AppletContext 類的 getApplet 和 getApplets 方法。設有這兩個函數(shù),applet程序可以通過名稱查找并訪問對方。你可以這樣調用 getApplet:
Applet friend = getAppletContext().getApplet("Friend");
一旦調用結束,變量 friend 就成了名為"Friend"的applet的一個實例(instance) (如果這樣的一個"Friend"applet存在的話)。例如:如果 "Friend" 是 Sun的 Animator applet 的一個實例,friend 將包含對這個實例的一個參考(reference)。
Applet的名字是在HTML中指定的,而不是在Java代碼中。為了創(chuàng)建一個能被前面的實例代碼所發(fā)現(xiàn)的animator applet,你可以在HTML插入如下幾行: