Java-applet

Java Applet 基础

Applet是一种java程序,一般运行在支持Java的web浏览器内,用完整的Java API支持,是一个全功能的Java应用程序

  • 独立的Java引用程序和applet程序间的区别

    • Java中Applet类继承了java.applet.Applet类
    • Applet类没有定义main(),所以一个Applet程序不会调用main()方法
    • Applet被设计为嵌入在一个HTML页面
    • 当用户浏览包含Applet的HTML页面,Applet的代码就被下载到用户的机器上
    • 要查看一个Applet需要JVM。JVM可以是文本浏览器的一个插件,或者独立的运行时环境
    • 用户机器上的JVM创建一个Applet类的实例,并调用Applet声明周期过程中的各种方法
    • Applet有web浏览器强制执行的严格的安全规则,Applet的安全机制被称为沙箱安全
    • Applet需要的其他类可以用到Java归档(JAR)文件的形式下载下来
  • Applet的生命周期

    • init:该方法的目的是为你的Applet提供所需的任何初始化。在Applet标记内的param标签被处理后调用该方法
    • start:浏览器调用init方法后,该方法被自动调用;每当用户从其他页面返回到包含Applet的页面时,则调用该方法
    • stop:当用户从包含Applet的页面移除时,该方法自动被调用;可以在相同的Applet中反复调用该方法
    • destory:此方法仅当浏览器正常关闭时调用。因为Applet只在HTML网页上有效,不应该在用户离开包含Applet的页面后遗漏任何资源
    • paint:该方法在start()方法之后立即被调用,或者在Applet需要重绘在浏览器的时候调用。paint()方法实际上继承于java.awt
  • 简单的Applet程序及调用

    //文件名 HelloWorldApplet.java
    import java.applet.;
    import java.awt.
    ;

    public class HelloWorldApplet extends Applet
    {
    public void paint (Graphics g)
    {
    g.drawString("Hello World", 25, 50) //在画布(25,50)出绘制字符串
    }
    }
    // Applet的调用

    The Hello,World Applet




    //hello world will be here



  • Applet 类
    基础的Applet类提供了供衍生类调用的方法,以此来得到浏览器上下文的信息和服务:
    得到Applet的参数、得到包括Applet的HTML文件的网络位置、得到Applet类目录的网络位置、打印浏览器的状态信息、获取一张图片、获取一个音频片段、播放一个音频片段、调整Applet的大小
    Applet提供一个接口供Viewer或浏览器来获取Applet的信息,并且来控制Applet的执行:
    请求Applet作者,版本和版权信息、请求Applet识别的参数的描述、初始化Applet、销毁Applet、开始执行Applet、结束执行Applet

  • Applet的调用

  1. <applet>标签的属性指定要运行的Applet类。widthheight用来指定Applet运行面板的初始大小。Applet必须使用标签来关闭
  2. 如果Applet接收参数,参数的值需要在<param>标签里添加,该标签位于之间。浏览器忽略了applet标签之间的文本和其他标签
  3. 不支持Java的浏览器,<applet>之间的内容可见
  4. codebase属性指定文档路径
  5. 如果Applet所在一个包中而不是默认包,所在的包必须包含在code属性里
    • 指定applet参数


      指定applet参数





      //参数名大小写不敏感



    • 获得applet参数

    1. 程序在init()方法里得到它的参数,也可以在paint()方法里得到参数。Applet开始得到值并保存了设置,而不是每次刷新的时候都得到值

    2. Applet viewer或者浏览器在Applet每次运行的时候调用init()方法。在加载完Applet之后,Viewer立即调用init()方法,重写该方法的默认实现,添加一些自定义的初始化代码

    3. Applet.getParameter()方法通过给出参数名称得到参数值。如果得到的值是数字或者其他非字符数据,必须解析为字符串类型

      import java.applet.;
      import java.awt.
      ;
      public class CheckerApplet extends Applet
      {
      int squareSize = 50;//初始化默认大小
      public void init () { }
      private void parseSquareSize (String param) {}
      private Color parseColor (String param) {}
      public void paint (Graphics g) {}
      }
      // CheckerApplet类的init()方法和私有的parseSquareSize()方法
      public void init ()
      {
      Stirng squareSizeParam = getParameter ("squareSize");
      parseSquareSize (squareSizeParam);
      String colorParam = getParameter ("color");
      Color fg = parseColor (colorParam);
      setBackground (Color.black);
      setForeground(fg);
      }
      private void parseSquareSize (String param)
      {
      if (param == null) return;
      try {
      squareSize = Integer.parseInt (param);
      }
      catch (Exception e) {
      //保留默认值
      }
      }

    • 应用程序转换成Applet
      将图形化的Java应用程序——使用AWT的应用程序和使用Java程序启动器的程序,转换成嵌入在web页面里的applet是很简单的,基本步骤如下:
    1. 编写一个HTML页面,该页面带有能加载applet代码的标签
    2. 编写一个JApplet类的子类,将该类设置为public。否者,Applet不能被加载
    3. 消除应用程序的mian()方法。不要为应用程序构造框架窗口,因为应用程序要显示在浏览器中
    4. 将应用程序中框架窗口的构造方法里的初始化代码移到Applet的init()方法中,不必显示的构造Applet对象,浏览器通过调用init()方法来实例化一个对象
    5. 移除对setSize()方法的调用,对于Applet,大小已经通过HTML文件里的width和height参数设置好了
    6. 移除对setDefaultCloseOperation()方法的调用。Applet不能被关闭,它随着浏览器的退出而终止
    7. 如果应用程序调用了setTitle()方法,消除对该方法的调用,applet不能有标题栏
    8. 不要调用setVisible(true),Applet是自动显示的
    • 事件处理
      Applet类从Container类继承了许多事件处理方法。Container类定义了几个方法,例如:processKeyEvent()processMouseEvent(),用来处理特别类型的事件,还有一个捕获所有事件的方法叫做processEvent,为了响应一个事件,Applet必须重写合适的事件处理方法

      import java.awt.event.MouseListener;
      import java.awt.event.MouseEvent;
      import java.applet.Applet;
      import java.awt.Graphics;

      public class ExampleEventHandling extends Applet
      implements MouseListener {
      StringBuffer strBuffer;
      public void init() {
      addMouseListener(this);
      strBuffer = new StringBuffer();
      addItem("initializing the applet");
      }
      public void start() {
      addItem("starting the applet");
      }
      public void stop() {
      addItem("stopping the applet");
      }
      public void destory() {
      addItem("unloading the applet");
      }
      void addItem(String word) {
      System.out.println(word);
      strBuffer.append(word);
      repaint();
      }
      public void paint(Graphics g) {
      g.drawRect(0, 0, getWidth()-1, getHeight()-1);
      g.drawString(strBuffer.toString(), 10, 20);
      }

      public void mouseEntered(MouseEvent event) {}
      public void mouseExited(MouseEvent event) {}
      public void mousePressed(MouseEvent event) {}
      public void mouseReleased(MouseEvent event) {}
      public void mouseClicked(MouseEvent event) {
      addItem("mouse clicked");
      }
      }
      // 调用该applet

      Event Handle







posted @ 2017-08-31 21:21  YFIFE  阅读(279)  评论(0)    收藏  举报