`
阳光雨露
  • 浏览: 24340 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Swing程序嵌入Html/Jsp页面

阅读更多

对于一个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两种浏览器。

 

(对于其他浏览器的支持,这里先不讨论,可使用Object:java Tag

实战:

示例1:Swing代码嵌入Html

demo代码:

import java.awt.*;
import java.awt.event.*;
import java.io.File;
import javax.swing.*;

public class Demo2 implements ActionListener {
Frame f = new Frame("文件复制!");
JLabel l = new JLabel("选择文件:");
JTextField tf = new JTextField(20);
JButton b = new JButton("选择。。。");
JFileChooser fd = new JFileChooser();

public Demo2() {
   fd.setDialogTitle("哈哈。。。");
   fd.setCurrentDirectory(new File("C:\\"));
   double lx = Toolkit.getDefaultToolkit().getScreenSize().getWidth();
   double ly = Toolkit.getDefaultToolkit().getScreenSize().getHeight();
   b.addActionListener(this);
   f.setLayout(new FlowLayout());
   f.add(l);
   f.add(tf);
   f.add(b);
   f.setLocation((int) lx / 2 - 150, (int) ly / 2 - 150);
   f.setSize(400, 400);
   f.setVisible(true);
   f.addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
     System.exit(0);
    }
   });
}

public void actionPerformed(ActionEvent e) {
   if (e.getSource().equals(b)) {
    fd.setFileSelectionMode(JFileChooser.FILES_ONLY); //只能选择文件
    int state = fd.showOpenDialog(null);
    if (state == 1) {
     return;// 撤销则返回
    } else {
     File f = fd.getSelectedFile();// f为选择到的文件
     tf.setText(f.getAbsolutePath());
    }
   }
}

public static void main(String[] args) {
   Demo2 d = new Demo2();
}
}

然后编译。结构图在最下面

 

Demo2.java为源文件,而Demo2.class为生成的二进制文件,demo2.html为嵌入的html页面。它们都在D:\aaa这个文件夹下

demo2.html代码:

<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="Demo2.class">
    <PARAM NAME="codebase" VALUE="D:\aaa">
    <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="400" align="baseline" code="Demo2.class" codebase="D:\aaa"
     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>中的<PARAM NAME="codebase" VALUE="D:\aaa"><EMBED >中的code="Demo2.class" codebase="D:\aaa" 有个codebasevalue属性------这个属性很重要,它指的是class文件所在的具体的路径,而<PARAM NAME="code" VALUE="Demo2.class">value仅指文件名。

这里因为把class和html页面放在一个文件里面,所以,可以这样写:

<PARAM NAME="codebase" VALUE="|\"> 另一个地方

<EMBED type="application/x-java-applet;jpi-version=1.4" width="400"
     height="400" align="baseline" code="Demo2.class" codebase="\"

方便吧---------用"\"代替绝对路径。

运行,出错!

原因1.我们的Swing代码需要操作本地文件(JFileChooser ),java为了安全,是不允许这样做的。因此,需要修改一个文件。

路径:比如java安装地址:C:\Program Files\Java\jre1.5.0_06\lib\security   (注意:是jre不是jdk)

修改 java.policy文件

添加

permission java.security.AllPermission;
permission java.util.PropertyPermission "file.encoding", "read";

OK!通过!

但是,在页面左上角的Applet载入中出现红叉,Swing程序却弹出在页面之上。解决:

1.消除红叉------只要Swing程序集成Applet就OK了。

public class Demo2 extends Applet implements ActionListener

 

来源于:http://kathy198908.blog.hexun.com/32350196_d.html

分享到:
评论

相关推荐

    Java 实现swing中嵌入html 实例 适合新手

    在Java编程中,Swing库提供了丰富的组件来创建桌面应用程序,但默认情况下它不支持直接显示HTML内容。然而,通过引入第三方库,如DJ Native Swing,我们可以实现在Swing应用中嵌入HTML的功能,这对于创建复杂的用户...

    用javascript编写swing程序源码

    标题中的“用javascript编写swing程序源码”表明这是一个关于使用JavaScript来实现Java Swing程序的示例。Java Swing是一个用于创建图形用户界面(GUI)的Java库,而JavaScript通常用于前端Web开发。这里的创新之处...

    JSP商城管理网站+java桌面应用程序

    JSP(JavaServer Pages)是一种基于Java技术的动态网页开发标准,它允许开发者在HTML代码中嵌入Java代码,以实现服务器端的动态处理。在这个“JSP商城管理网站”中,开发者可能使用了JSP技术来构建前端界面,提供...

    jsp添加图片水印程序

    JSP(JavaServer Pages)是Java的一种动态网页技术,它允许开发者在HTML页面中嵌入Java代码,从而实现在服务器端处理数据并生成动态网页。在这个项目中,我们将使用JSP来处理图片加水印的操作。 在描述中提到"j2ee...

    如何学好JSP

    JSP是一种动态网页技术,它允许开发者在HTML页面中嵌入Java代码,实现服务器端的业务逻辑处理。以下是学习JSP的具体步骤和需要注意的问题: 1. 理解基础:首先,你需要掌握Java语言的基础知识,因为JSP是基于Java的...

    学生信息管理swing.zip

    2. **JSP与Servlet**: JSP页面通常包含HTML、CSS、JavaScript以及嵌入的Java代码,负责展示动态内容。Servlet在服务器端运行,处理JSP提交的请求,执行业务逻辑,并将结果返回给JSP。 3. **MySQL数据库操作**: 使用...

    JSP2_0技术手册

    JSP是一种动态网页开发技术,它允许开发者使用HTML或XML等标记语言来创建网页,并通过嵌入Java代码来实现动态内容的生成。在**JavaPagesServlet**的框架下,JSP与Servlet紧密协作,提供了高效且灵活的Web应用开发...

    jsp网站开发需要学习的技术

    - **JSP对象与脚本**:学习如何使用JSP内置对象和脚本编写动态页面。 - **分布式应用**:理解如何构建分布式应用架构。学习时间为4至6周。 ##### 7. 更多JSP服务器 - **其他服务器**:除了Tomcat之外,还可以探索...

    JSP实现的网页特效(很多)

    在IT行业中,Java Server Pages(JSP)是一种广泛使用的服务器端脚本语言,它允许开发者在HTML或XML文档中嵌入Java代码,从而创建动态、交互式的网页。本资源"JSP实现的网页特效(很多)"显然是一系列利用JSP技术...

    在jsp中用awt类来画图

    在JavaServer Pages (JSP) 中使用AWT(Abstract Window Toolkit)类来画图是一种将图形界面元素嵌入到Web应用程序中的技术。AWT是Java早期的图形用户界面(GUI)库,虽然在Swing和JavaFX等现代库出现后使用较少,但...

    JFreeChart JSP应用例子

    JFreeChart 是一个强大的Java图表库,它提供了丰富的图表类型,包括柱状图、饼图、线图、散点图等,用于在Java应用程序、Swing组件以及Web应用如JSP中展示数据。在"JFreeChart JSP应用例子"中,我们将深入探讨如何在...

    JFreeChart在JSP中的应用实例

    3. **嵌入到JSP**:将生成的图表图片URL或SVG代码嵌入到JSP页面中。 #### 五、注意事项 - **版本兼容性**:确保使用的JFreeChart版本与Java环境和其他依赖库兼容。 - **图表样式自定义**:JFreeChart提供了丰富的...

    电子资料完整代码(jsp项目)

    1. **JSP页面**:这些页面包含HTML结构,用JSP指令、脚本元素和EL表达式来嵌入Java代码。它们负责展示用户界面,接受用户输入,并与服务器进行通信。 2. **Servlet**:作为JSP背后的控制器,Servlet处理HTTP请求,...

    jsp 图片的旋转

    JSP是Java平台上的动态网页技术,允许开发者在HTML或XML文档中嵌入Java代码,以实现服务器端的业务逻辑和数据处理。对于图片旋转的需求,通常会借助于Java的图像处理库,如Java AWT(Abstract Window Toolkit)和...

    JSP截取服务端桌面

    JSP文件包含了静态的HTML或XML代码以及嵌入的Java代码,这些Java代码可以是脚本元素(scriptlets)、表达式或者是声明。当用户请求一个JSP页面时,Web服务器会将JSP转换为对应的Servlet(Java类),然后执行这个...

    jsp学习文档,快快下载

    JSP(JavaServer Pages)是一种基于Java技术的动态网页开发工具,它允许开发者在HTML或XML文档中嵌入Java代码,从而实现动态内容的生成。JSP是Java EE(Enterprise Edition)平台的一部分,主要用于构建Web应用程序...

    [其他类别]QQ闪字程序_ztxiu.zip

    - JSP是一种基于Java的技术,它将静态HTML和动态Java代码结合在一起,使得开发者可以方便地在网页中嵌入服务器端的逻辑。 - JSP文件由两部分组成:静态内容(HTML、CSS、JavaScript)和动态内容(Java代码)。 - ...

    Java高级程序设计

    学习者将学习如何在JSP页面中嵌入Java表达式、脚本片段和指令,以及如何使用JSP标签库(Tag Libraries)和Servlet进行服务器端处理。 6. **J2EE(Java Platform, Enterprise Edition)**: J2EE是用于构建分布式...

    【初学者如何学习jsp】.docx

    JSP(JavaServer Pages)是一种基于Java的动态网页技术,它允许开发人员在HTML、XHTML或XML文档中嵌入Java代码,从而实现服务器端的编程。对于初学者来说,学习JSP需要掌握以下几个关键知识点: 1. **Web服务器基础...

    swing界面设计之JTree

    - **JSP 文件**:生成帮助页面。 - **测试服务器端帮助**:验证帮助内容是否正确加载。 - **结束语**:总结了使用JavaHelp 2.0构建帮助系统的要点。 以上内容总结了从Swing界面设计之JTree相关的知识点,包括如何...

Global site tag (gtag.js) - Google Analytics