对于一个Swing写的应用程序,在很多的工程中,是需要嵌入到页面的。这样不仅增加了交互性和界面可操作性,而且让程序更加人性化。
而以往的界面嵌入,大多是以Applet为主的。但是对于Swing为主的程序,sun公司仍然是提供解决方案的。
原理:
页面代码:
<OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
width="400" height="300" align="baseline"
codebase="http://java.sun.com/products/plugin/1.4/jinstall-14-win32.cab#Version=1,4,0,mn">
<PARAM NAME="code" VALUE="Example.class">
<PARAM NAME="codebase" VALUE="/">
<PARAM NAME="type" VALUE="application/x-java-applet;jpi-version=1.4">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
<PARAM NAME="scriptable" VALUE="true">
<COMMENT>
<EMBED type="application/x-java-applet;jpi-version=1.4" width="400"
height="300" align="baseline" code="Example.class" codebase="/"
model="models/HyaluronicAcid.xyz"
pluginspage="http://java.sun.com/j2se/1.4/download.html">
<NOEMBED>
No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
</NOEMBED>
</EMBED>
</COMMENT>
</OBJECT>
解释:
<OBJECT> 是IE浏览器推荐用来嵌入Applet的标签。这个标签中的URI以“clsid”开始,只有IE浏览器支持这个属性,其他浏览器都不支持。URI以“clsid”开始,表明这是一个ActiveX控件,只有Windows中的IE才识别的属性,代表注册表中一个注册的ActiveX类,“CAFEEFAC-0014-0002-0000-ABCDEFFEDCBA”是SUN JRE安装时在Windows中注册的,代表SUN Java Plug-in 1.4.2。因此当IE解析到示例中的标签时,会通过注册表,查找到Java Plug-in,然后启动JRE,在当前位置渲染这个Applet。另外一个clsid值:“8AD9C840-044E-11D1-B3E9-00805F499D93”,代表当前最新的JRE版本。“codebase”属性指定了一个特定版本JRE的下载地址,当客户端机器上没有安装Java Plug-in时,会自动从这个地址下载安装Java Plug-in。“scriptable”属性用于指定Applet示例是否能与页面中的JavaScript交互。
<EMBED >是Netscape Navigator 4.x浏览器支持的嵌入Applet的标签,其他浏览器很少支持这个标签的,因此实际应用的很少。这个标签不支持以内嵌Param标签的方式为Applet传递参数。
因此,最上面的写法是一种折中的写法-----为的是这种主流浏览器对Swing的支持。把Embed标签用Comment标签包含起来,放在Object标签内部。IE在解释Object标签时,会忽略Comment标签内的内容。而Netscape Navigator不能识别clsid、不能识别Comment标签,它会忽略忽略外层的Object标签和Comment标签,而只看到Embed标签的内容。这样,这段代码可以同时适应IE和Netscape Navigator两种浏览器。