JApplet fails to run in HTML page

2019-08-04 15:14发布

I have created a JApplet using the JUNG library in Netbeans that compiles and runs normally. However, when I try to create an html file that runs the applet, only a grey pane appears but the components are missing. My class is :

   public class View extends JApplet {

   //Here I declare the buttons etc..

   public View()
{
    initializeComponent();
            fetchGraphs();

}


   public static void main(String[] args) throws IOException{

    f = new JFrame();
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    x = screenSize.width;
    y = screenSize.height;


    f.getContentPane().add(new View());
    f.setTitle("Social Network Privacy Settings and Access Control");
    f.setLocation(new Point(15, 20));
    f.setSize(new Dimension(x-20,y-50));
    f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    f.setResizable(false);

    f.setVisible(true);
}  
}

The method initializeComponent() adds all the components to the main window. I used JFrameBuilder to build some basic components. JFrameBuilder uses a method addComponent(container, component, x, y, width, height) to add components

I use the code below for that:

  contentPane = (JPanel)this.getContentPane();

  //to create the japplet contentpane

  addComponent(contentPane, genGraphButton, (int)(0.35*x),(int)(0.63*y),       
  (int)(0.2*x),28);

  // to add components

Then I create an html file:

    <applet code = 'MyPackage.View' 
    archive = 'MyProject.jar',
    width = 1600, 
    height = 800/>

in the /dist folder but then only a grey pane appears when I try to open it with Mozilla Firefox. The strange thing is that I have created another simple applet, this time with netbeans JBuilder and it runs normally in a web page.

I really need some help!

4条回答
Emotional °昔
2楼-- · 2019-08-04 15:55

You mention the JUNG library, it relies on the two third party libraries, Collections-Generic & Cern Colt Scientific Library 1.2.0. As mentioned by @othman they need to be added to the run-time class-path of the applet (added to the archive attribute of the applet element).

But just so we are clear, make sure the HTML contains more than just the applet element. Something like this:

<html>
<body>
<applet 
    code='MyPackage.View' 
    archive='MyProject.jar,jung.jar,collections.jar,colt-scientific.jar'
    alt='Java is DISABLED in this browser!'
    width='1600'
    height='800'>
This browser does not recognize the applet element! 
</applet>
</body>
</html>

Of course, you'll need to change the names of the last 3 Jars to their real names.

查看更多
仙女界的扛把子
3楼-- · 2019-08-04 15:59

I'm no Applet expert, since I don't use them, but IIRC you need the init() method to initialize your view. main(...) is not called for an applet.

查看更多
ら.Afraid
4楼-- · 2019-08-04 16:06

First, I am not sure that new lines you added into the html are legal. I mean write <applet and /> without any new lines and spaces.

Second, test that your jar is really available. To do this go to the same URL that you go to retrieve your HTML without HTML but with jar, i.e.

if your HTML URL is: http://somehost/my.html type in browser http://somehost/MyProject.jar and see that you can download the jar.

if this works check the code attribute. Is your package name really MyPackage? Capitalized? Do you know it is not according the naming convention?

Also check java console. Find it somewhere in menus of your browser: it depends in browser. I believe that you will see the reason there in form of exception stack trace.

查看更多
一夜七次
5楼-- · 2019-08-04 16:15

you need to reference also the JUG jars in your applet tag :

<

applet code = 'MyPackage.View' 

archive = 'MyProject.jar , jung_xx.jar',

width = 1600, 

height = 800 /
>

in the archive attribute add all jung jars that you have currently in your netbeans project classpath.

查看更多
登录 后发表回答