明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

Java咖啡館:情人節(jié)的Applet(3)

[摘要]OK,保存一下項目,然后可以點擊Eclipse的Run菜單的Run as-Java Applet項來預(yù)覽這個Applet了,是不是很簡單?結(jié)合網(wǎng)頁  把Applet嵌入網(wǎng)頁很簡單,只要一個<applet>標(biāo)簽即可。拿我們的NewsApplet類舉例,在Eclipse項目的根目錄中新建一...
OK,保存一下項目,然后可以點擊Eclipse的Run菜單的Run as-Java Applet項來預(yù)覽這個Applet了,是不是很簡單?

結(jié)合網(wǎng)頁

  把Applet嵌入網(wǎng)頁很簡單,只要一個<applet>標(biāo)簽即可。拿我們的NewsApplet類舉例,在Eclipse項目的根目錄中新建一個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)簽表示這里定義一個Applet,它對應(yīng)的文件名是NewsApplet.class,它的相對路徑是當(dāng)前目錄。<applet>標(biāo)簽中有兩個<param>標(biāo)簽,這就是上文提到過的傳遞給Applet的參數(shù)。

Just   Do   It

  如果現(xiàn)在用瀏覽器打開這個sample.htm將會得到什么結(jié)果?驗證你的猜測。

  除了用瀏覽器觀察Applet,J2SE SDK提供的小工具appletviewer也非常好用。打開Windows的“命令提示符”,進(jìn)入sample.htm所在的目錄,然后輸入:appletviewer sample.htm,來親自體驗一下appletviewer吧。

與JavaScript交互

  JavaScript應(yīng)該是大家非常熟悉的客戶端腳本語言。雖然名字中帶有Java,但它和Java語言只是在語法上有類似之處,JavaScript是由瀏覽器解釋運行,與Applet由Java虛擬機(jī)執(zhí)行完全不一樣。不過,這兩個沒有血緣關(guān)系的同班同學(xué)倒是可以精誠合作,Applet實現(xiàn)底層的工作,JavaScript執(zhí)行更高層的調(diào)用,從而實現(xiàn)意想不到的效果。

  JavaScript可以通過多種途徑操縱Applet。首先,JavaScript能調(diào)用Applet中的public的方法,這時的Applet好像一個聽話的機(jī)器人一樣好用。另外一種方法就是用JavaScript直接修改HTML結(jié)構(gòu),這樣可以定制Applet的各種屬性,有更大的靈活性。

  剛才說了,我們的目標(biāo)是把這個Applet制作成一種服務(wù),即使不懂編程的朋友通過設(shè)置網(wǎng)頁的參數(shù)就能夠使用,因為不是每個人都有能力(或者精力)修改源代碼的。所以,需要把Applet的參數(shù)做成可定制的,而這個只能夠由JavaScript完成。雖然我們可以給Applet寫一些類似于setFrom()和setTo()的方法給JavaScript調(diào)用,但是問題在于JavaScript函數(shù)的執(zhí)行時機(jī),因為Applet無法通知JavaScript它已經(jīng)完成初始化操作了。

  所以,我們應(yīng)該走第二條路,即用JavaScript直接修改HTML結(jié)構(gòu),動態(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));

    // 動態(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>