Java咖啡館:情人節(jié)的Applet(3)
發(fā)表時間:2024-06-04 來源:明輝站整理相關軟件相關文章人氣:
[摘要]OK,保存一下項目,然后可以點擊Eclipse的Run菜單的Run as-Java Applet項來預覽這個Applet了,是不是很簡單?結合網(wǎng)頁 把Applet嵌入網(wǎng)頁很簡單,只要一個<applet>標簽即可。拿我們的NewsApplet類舉例,在Eclipse項目的根目錄中新建一...
OK,保存一下項目,然后可以點擊Eclipse的Run菜單的Run as-Java Applet項來預覽這個Applet了,是不是很簡單?
結合網(wǎng)頁
把Applet嵌入網(wǎng)頁很簡單,只要一個<applet>標簽即可。拿我們的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>標簽表示這里定義一個Applet,它對應的文件名是NewsApplet.class,它的相對路徑是當前目錄。<applet>標簽中有兩個<param>標簽,這就是上文提到過的傳遞給Applet的參數(shù)。
Just Do It
如果現(xiàn)在用瀏覽器打開這個sample.htm將會得到什么結果?驗證你的猜測。
除了用瀏覽器觀察Applet,J2SE SDK提供的小工具appletviewer也非常好用。打開Windows的“命令提示符”,進入sample.htm所在的目錄,然后輸入:appletviewer sample.htm,來親自體驗一下appletviewer吧。
與JavaScript交互
JavaScript應該是大家非常熟悉的客戶端腳本語言。雖然名字中帶有Java,但它和Java語言只是在語法上有類似之處,JavaScript是由瀏覽器解釋運行,與Applet由Java虛擬機執(zhí)行完全不一樣。不過,這兩個沒有血緣關系的同班同學倒是可以精誠合作,Applet實現(xiàn)底層的工作,JavaScript執(zhí)行更高層的調用,從而實現(xiàn)意想不到的效果。
JavaScript可以通過多種途徑操縱Applet。首先,JavaScript能調用Applet中的public的方法,這時的Applet好像一個聽話的機器人一樣好用。另外一種方法就是用JavaScript直接修改HTML結構,這樣可以定制Applet的各種屬性,有更大的靈活性。
剛才說了,我們的目標是把這個Applet制作成一種服務,即使不懂編程的朋友通過設置網(wǎng)頁的參數(shù)就能夠使用,因為不是每個人都有能力(或者精力)修改源代碼的。所以,需要把Applet的參數(shù)做成可定制的,而這個只能夠由JavaScript完成。雖然我們可以給Applet寫一些類似于setFrom()和setTo()的方法給JavaScript調用,但是問題在于JavaScript函數(shù)的執(zhí)行時機,因為Applet無法通知JavaScript它已經(jīng)完成初始化操作了。
所以,我們應該走第二條路,即用JavaScript直接修改HTML結構,動態(tài)把<applet>標簽寫入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>標簽寫入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>科學家表示,白天能夠達到肉眼辨別的星辰非常罕見。<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>