OK,保存一下项目,然后可以点击Eclipse的Run菜单的Run as-Java Applet项来预览这个Applet了,是不是很简单?
结合网页
把Applet嵌入网页很简单,只要一个<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的参数。 Just Do It
如果现在用浏览器打开这个sample.htm将会得到什么结果?验证你的猜测。 除了用浏览器观察Applet,J2SE SDK提供的小工具appletviewer也非常好用。打开Windows的“命令提示符”,进入sample.htm所在的目录,然后输入:appletviewer sample.htm,来亲自体验一下appletviewer吧。
与JavaScript交互
JavaScript应该是大家非常熟悉的客户端脚本语言。虽然名字中带有Java,但它和Java语言只是在语法上有类似之处,JavaScript是由浏览器解释运行,与Applet由Java虚拟机执行完全不一样。不过,这两个没有血缘关系的同班同学倒是可以精诚合作,Applet实现底层的工作,JavaScript执行更高层的调用,从而实现意想不到的效果。
JavaScript可以通过多种途径操纵Applet。首先,JavaScript能调用Applet中的public的方法,这时的Applet好像一个听话的机器人一样好用。另外一种方法就是用JavaScript直接修改HTML结构,这样可以定制Applet的各种属性,有更大的灵活性。
刚才说了,我们的目标是把这个Applet制作成一种服务,即使不懂编程的朋友通过设置网页的参数就能够使用,因为不是每个人都有能力(或者精力)修改源代码的。所以,需要把Applet的参数做成可定制的,而这个只能够由JavaScript完成。虽然我们可以给Applet写一些类似于setFrom()和setTo()的方法给JavaScript调用,但是问题在于JavaScript函数的执行时机,因为Applet无法通知JavaScript它已经完成初始化操作了。
所以,我们应该走第二条路,即用JavaScript直接修改HTML结构,动态把<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中的参数 var urlquery = location.href.split("?"); if (urlquery.length > 1) { // 解析参数并获取from和to var urlterms = urlquery[1].split("&"); var from = decodeURIComponent(urlterms[0].substring(5)); var to = decodeURIComponent(urlterms[1].substring(3)); // 动态把<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>酷似汉字的星辰若隐若现&?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>据称,如果名字跟星辰相似,一定能够得到神灵的祝福。<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>
|