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的调用
      <html>
      <title>The Hello,World Applet</title>
      <hr>
      <applet code="HelloWorldApplet.class" width="320" height="120">
                   //hello world will be here
      </applet>
      <hr>
      </html>
    
  • 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参数

      <html>
      <title>指定applet参数</title>
      <hr>
      <applet code="CheckerApplet.class" width="480" height="320">
      <param name="color" value="blue">
      <param name="squaresize" value="30">//参数名大小写不敏感
      </applet>
      <hr>
      <html>
    
  • 获得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
      <html>
      <title>Event Handle</title>
      <hr>
      <applet code="ExampleEventHandling.class" width="300" height="300">
      </applet>
      <hr>
      </html>
原文地址:https://www.cnblogs.com/yfife/p/7460593.html