Java Applet init方法

时间:2015-05-28 18:18:13

标签: java parameters applet

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

public class MyApplet extends Applet {
        static public int m,n,p,k;
    public void init () {
        m=Integer.parseInt(getParameter("m"));
                n=Integer.parseInt(getParameter("n"));
                p=Integer.parseInt(getParameter("p"));
                k=Integer.parseInt(getParameter("k"));
    }
    public static void main(String[] args) {
            int m1,n1,k1,p1;
            System.out.println(m+""+n+""+""+k+""+p+"44");
            m1 = (args.length>0) ? Integer.parseInt(args[0]) : m;
            n1 = (args.length>1) ? Integer.parseInt(args[1]) : n;
            k1 = (args.length>2) ? Integer.parseInt(args[2]) : k;
            p1 = (args.length>3) ? Integer.parseInt(args[3]) : p;
            JFrame frame = new JFrame("App");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setLocation(200,200);
            Board p;
            try {
                    p = new Board(m1,n1,k1,p1);
            } catch (Exception ex) { p = new Board(5, 5, 1, 1); }
            frame.add(p);
            frame.pack();
            frame.setVisible(true);
    }
}

我将首先解释一下:我在HTML文件中有这4个参数,但如果有人给出了他自己的参数,那么他们就有优先权,而且如果有人给出了错误的参数,比如字母而不是数字。重点是,我不认为会调用init方法,因为你可以看到我在main方法中添加了print并且它总是打印零,即使我在init中手动设置'm'为15或者其他东西,仍然打印0。因为它直接进入main方法,忽略init?如何防止这种情况发生,我真的需要这些HTML参数。

1 个答案:

答案 0 :(得分:2)

如果您使用作为Applet,则托管它的applet容器负责实例化它并在适当的时间(init())调用生命周期方法, start()stop()destroy())。请特别注意 main()方法与将实例作为Applet 运行无关 - 它是直接在a上运行类的入口点VM作为应用程序

另一方面,如果您将类作为应用程序运行,则main()方法中的任何内容都不会执行任何会导致init()被调用的内容。 main()方法甚至没有创建在上可以调用 init()的实例。