【问题标题】:Embed java swing in html在html中嵌入java swing
【发布时间】:2012-12-19 14:43:15
【问题描述】:

我的 java swing 应用程序有以下代码,该应用程序在 eclipse IDE 中执行良好,但是当我将其嵌入 HTML 时,不在浏览器中执行,只显示空白框。

Java Swing 代码:

import javax.swing.*;
import java.applet.*;
import java.awt.*;

public class Form extends JApplet{

public void init()
{
JFrame frame = new JFrame("Form");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
JPanel panel = new JPanel();

JLabel label1 = new JLabel("");
JTextField field = new JTextField(20);
//JButton button1 = new JButton("OK");
//JButton button2 = new JButton("Cancel");
Container c;
c=frame.getContentPane();
c.setLayout(null);
JLabel name=new JLabel("Name :");
JLabel compcode=new JLabel("Company Code :");
JLabel cardno=new JLabel("Card Number: ");
JLabel cardtype=new JLabel("Card Type :");
JLabel pin=new JLabel("Pin :");
JLabel bldgrp=new JLabel("Blood Group :");
JLabel empcode=new JLabel("Employee Code :");
JLabel dob=new JLabel("DOB :");
JLabel valupto=new JLabel("Valid Upto :");
JLabel jdate=new JLabel("Joining Date :");
JLabel dept=new JLabel("Department :");
JLabel uid=new JLabel("UID :");

JTextField nametxt=new JTextField(10);
JComboBox compcodetxt=new JComboBox();
JTextField cardnumtxt=new JTextField(10);
JTextField cardtypetxt=new JTextField(10);
JTextField pintxt=new JTextField(10);
JComboBox bldgrptxt=new JComboBox();
JTextField empcodetxt=new JTextField(10);
JTextField dobtxt=new JTextField(10);
JTextField valuptotxt=new JTextField(10);
JTextField jdatetxt=new JTextField(10);
JTextField depttxt=new JTextField(10);
JTextField uidtxt=new JTextField(10);



name.setBounds(10, 10, 100, 25);
nametxt.setBounds(110, 10, 100, 25);
compcode.setBounds(10, 40, 100, 25);
compcodetxt.setBounds(110, 40, 100, 25);
cardno.setBounds(10, 70, 100, 25);
cardnumtxt.setBounds(110, 70, 100, 25);
pin.setBounds(10, 110, 100, 25);
pintxt.setBounds(110, 110, 100, 25);
bldgrp.setBounds(10, 140, 100, 25);
bldgrptxt.setBounds(110, 140, 100, 25);
empcode.setBounds(10, 170, 100, 25);
empcodetxt.setBounds(110, 170, 100, 25);
dob.setBounds(10, 200, 100, 25);
dobtxt.setBounds(110, 200, 100, 25);
valupto.setBounds(10, 230, 100, 25);
valuptotxt.setBounds(110, 230, 100, 25);
jdate.setBounds(10, 260, 100, 25);
jdatetxt.setBounds(110, 260, 100, 25);
dept.setBounds(10, 290, 100, 25);
depttxt.setBounds(110, 290, 100, 25);
uid.setBounds(10, 320, 100, 25);
uidtxt.setBounds(110, 320, 100, 25);

//button1.setBounds(10, 50, 75, 25);
//button2.setBounds(10, 70, 75, 25);

c.add(name); c.add(nametxt);
c.add(compcode); c.add(compcodetxt);
c.add(cardno); c.add(cardnumtxt);
c.add(pin); c.add(pintxt);
c.add(bldgrp); c.add(bldgrptxt);
c.add(empcode); c.add(empcodetxt);
c.add(dob); c.add(dobtxt);
c.add(valupto); c.add(valuptotxt);
c.add(jdate); c.add(jdatetxt);
c.add(dept); c.add(depttxt);
c.add(uid); c.add(uidtxt);


//panel.add(button1);
//panel.add(button2);
//frame.add(panel);
frame.setSize(350,400);
//frame.pack();
frame.setVisible(true);
  }
}

嵌入的HTML代码如下:

<html>
<head>
<title>Test Page</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>

    <applet Archive ="Form.jar" Code="com.vms.util.Form" WIDTH="250" HEIGHT="300" >
    </applet>


</html>

我为我的 Swing 类 Form.jar 生成了 JAR,包 com.vms.util 我将它保存在我的D: drive form 目录中,并将所有 html 和 jar 放在 form 目录中。

我可以在 HTML 中运行我的 swing 应用程序,我该如何运行它?

当我使用 appletviewer 运行上述代码时,出现以下错误

D:\form>appletviewer Form2.html
java.security.AccessControlException: access denied (java.lang.RuntimePermission
 exitVM.0)
        at java.security.AccessControlContext.checkPermission(AccessControlConte
xt.java:374)
        at java.security.AccessController.checkPermission(AccessController.java:
546)
        at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
        at java.lang.SecurityManager.checkExit(SecurityManager.java:744)
        at javax.swing.JFrame.setDefaultCloseOperation(JFrame.java:372)
        at Form.init(Form.java:10)
        at sun.applet.AppletPanel.run(AppletPanel.java:424)
        at java.lang.Thread.run(Thread.java:662)

【问题讨论】:

  • 浏览器必须显示某种错误,例如 ClassDefNotFound 或其他错误。
  • "在 html 中嵌入 java swing" 为什么? 1) 从链接使用JWS 2) JWS 启动的应用程序。将提供更好的用户体验。
  • 请先阅读Threads in Applets,然后再继续您的任务:-) 我希望您不打算像这样运行它Tables

标签: java html swing applet


【解决方案1】:

这似乎是一个小错误,只需启用 java 控制台并运行应用程序即可。

它将帮助您了解问题所在

PS:在windows上启用java控制台

  • 转到控制面板
  • 选择java
  • 转到高级选项卡
  • 在调试部分选择小程序生命周期异常
  • 选择 Java 控制台部分下的显示控制台。

希望对你有帮助

【讨论】:

  • 我更愿意推荐人们查看 Oracle 文档以查看 Java Console
【解决方案2】:

评论下一行

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

不允许小程序(除非通过直接修改客户端计算机上的 Java 安全策略)来执行一些关键调用。即使使用签名的小程序。

在您的情况下,javax.swing.JFrame.setDefaultCloseOperation 正在触发异常

【讨论】:

  • 就是这样。最好将代码放在start 而不是init 中,并在stop 上清理框架。
猜你喜欢
  • 2019-01-12
  • 2011-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-13
  • 2012-02-28
  • 1970-01-01
  • 2013-12-23
相关资源
最近更新 更多