OK,保存一下項(xiàng)目,然后可以點(diǎn)擊Eclipse的Run菜單的Run as-Java Applet項(xiàng)來預(yù)覽這個(gè)Applet了,是不是很簡單?
結(jié)合網(wǎng)頁
把Applet嵌入網(wǎng)頁很簡單,只要一個(gè)<applet>標(biāo)簽即可。拿我們的NewsApplet類舉例,在Eclipse項(xiàng)目的根目錄中新建一個(gè)sample.htm,源代碼如下:
<html> <body> <applet code="NewsApplet.class" codebase="." width=480 height=384> <param name="from" value="Prince Charming"> <param name="to" value="Cinderella"> </applet> </body> </html>
其中<applet>標(biāo)簽表示這里定義一個(gè)Applet,它對(duì)應(yīng)的文件名是NewsApplet.class,它的相對(duì)路徑是當(dāng)前目錄。<applet>標(biāo)簽中有兩個(gè)<param>標(biāo)簽,這就是上文提到過的傳遞給Applet的參數(shù)。 Just Do It
如果現(xiàn)在用瀏覽器打開這個(gè)sample.htm將會(huì)得到什么結(jié)果?驗(yàn)證你的猜測。 除了用瀏覽器觀察Applet,J2SE SDK提供的小工具appletviewer也非常好用。打開Windows的“命令提示符”,進(jìn)入sample.htm所在的目錄,然后輸入:appletviewer sample.htm,來親自體驗(yàn)一下appletviewer吧。
與JavaScript交互
JavaScript應(yīng)該是大家非常熟悉的客戶端腳本語言。雖然名字中帶有Java,但它和Java語言只是在語法上有類似之處,JavaScript是由瀏覽器解釋運(yùn)行,與Applet由Java虛擬機(jī)執(zhí)行完全不一樣。不過,這兩個(gè)沒有血緣關(guān)系的同班同學(xué)倒是可以精誠合作,Applet實(shí)現(xiàn)底層的工作,JavaScript執(zhí)行更高層的調(diào)用,從而實(shí)現(xiàn)意想不到的效果。
JavaScript可以通過多種途徑操縱Applet。首先,JavaScript能調(diào)用Applet中的public的方法,這時(shí)的Applet好像一個(gè)聽話的機(jī)器人一樣好用。另外一種方法就是用JavaScript直接修改HTML結(jié)構(gòu),這樣可以定制Applet的各種屬性,有更大的靈活性。
剛才說了,我們的目標(biāo)是把這個(gè)Applet制作成一種服務(wù),即使不懂編程的朋友通過設(shè)置網(wǎng)頁的參數(shù)就能夠使用,因?yàn)椴皇敲總(gè)人都有能力(或者精力)修改源代碼的。所以,需要把Applet的參數(shù)做成可定制的,而這個(gè)只能夠由JavaScript完成。雖然我們可以給Applet寫一些類似于setFrom()和setTo()的方法給JavaScript調(diào)用,但是問題在于JavaScript函數(shù)的執(zhí)行時(shí)機(jī),因?yàn)锳pplet無法通知JavaScript它已經(jīng)完成初始化操作了。
所以,我們應(yīng)該走第二條路,即用JavaScript直接修改HTML結(jié)構(gòu),動(dòng)態(tài)把<applet>標(biāo)簽寫入HTML。從而,我們最終版本的index.htm代碼如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>大千世界無奇不有</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body> <script language="JavaScript"> // 得到URL中的參數(shù) var urlquery = location.href.split("?"); if (urlquery.length > 1) { // 解析參數(shù)并獲取from和to var urlterms = urlquery[1].split("&"); var from = decodeURIComponent(urlterms[0].substring(5)); var to = decodeURIComponent(urlterms[1].substring(3)); // 動(dòng)態(tài)把<applet>標(biāo)簽寫入HTML document.write('<center>'); document.write('<h1>愛琴海上千年罕見的奇觀</h1>'); document.write('</center>'); document.write('<hr>'); document.write('<p align=center>http://www.cfan.com.cn 2005年2月14日 記者:GaryChan</p>'); document.write('<applet code="NewsApplet.class" codebase="." width=480 height=384>'); document.write(' <param name="from" value="' + from + '">'); document.write(' <param name="to" value="' + to + '">'); document.write('</applet>'); document.write('<p>酷似漢字的星辰若隱若現(xiàn)&?lt;/p>'); document.write('<img src="http://edu.chinaz.com/Get/Program/Program_Other/crowd.jpg">'); document.write('<p>世界各地人們蜂擁而來爭相觀賞</p>'); document.write('<p>科學(xué)家表示,白天能夠達(dá)到肉眼辨別的星辰非常罕見。<p>'); document.write('<p>據(jù)稱,如果名字跟星辰相似,一定能夠得到神靈的祝福。<p>'); } </script> <form> <p>你的名字: <input name="from" type="text" id="from" width="100"> 她的名字:<input name="to" type="text" id="to" width="100"> <input type="submit" name="Submit" value="提交"> </p> </form> </body> </html>
|
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!