2013-01-05 70 views
1

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

的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> 

我生成JAR对我的挥杆类Form.jar与包com.vms.util 我一直在我的D: drive form目录并将所有html和jar放在表单目录中。

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

当我上面的代码中使用小程序查看运行我收到以下错误

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) 
+0

浏览器必须呈现出某种类似ClassDefNotFound或别的什么错误。 – kaysush

+1

*“在java中嵌入java swing”* ***为什么?*** 1)使用[JWS]从链接启动框架会更容易(http://stackoverflow.com/tags/java-web-开始/信息)2)JWS推出的应用程序。将提供更好的用户体验。 –

+0

请继续阅读关于[** Applets **中的线程](http://docs.oracle.com/javase/tutorial/uiswing/components/applet.html),然后继续处理您的任务:-)我希望你不打算像这样运行[Tables](http://gagandeepbali.uk.to/gaganisonline/swing/tables/tables/bin/tableapplet.html) –

回答

3

注释以下行

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

applet不允许(除在客户机上直接修改Java安全策略)来执行一些重要的呼叫。即使使用签名的小程序。

在你的情况下,在javax.swing.JFrame.setDefaultCloseOperation被触发异常

+0

就是这样。最好把代码放在'start'而不是'init'中,并在'stop'上进行清理。 –

1

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

它会帮助你知道什么是问题

PS:启用Windows Java控制台

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

希望这将帮助你

+2

我更喜欢将人们引用到查看[Java控制台](http://www.java.com/en/download/help/javaconsole.xml)。 –