Java Applet 初始化方法

标签 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 参数才能工作。

最佳答案

如果您将类用作 Applet,则托管它的 applet 容器负责实例化它并在适当的时间调用它的生命周期方法( init()、start()stop()destroy())。请特别注意,ma​​in() 方法与将实例作为 Applet 运行无关——它是运行您的直接在虚拟机上将类作为应用程序

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

关于Java Applet 初始化方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30514205/

相关文章:

java - 游戏小程序未在2D游戏中运行(while循环)

java - 油漆方法是什么?它是如何工作的?

java - Applet在Eclipse中运行良好;但在 Chrome 中运行会出现 InvocableTargetException

java - 运行 swing.Jframe 类中声明的方法

c# - 对象无法从 DBNull 转换为其他类型

asp.net - 是否有支持请求参数连接的 URL 构建器?

bash - 将 bash 脚本参数拆分为 "="

java - 替代 SocketUtils.findAvailableTcpPort()?

java - JPA @OrderBy() 通过关系表

java - 动态转换对象