黑马程序员技术交流社区

标题: 讲解一下关于Applet的知识 [打印本页]

作者: liuelxiwd    时间: 2013-5-16 16:06
标题: 讲解一下关于Applet的知识
    在Java中,有两种类型的程序:应用程序(Application)和小应用程序(Applet)。
    Applet程序继承自java.applet.Applet类,嵌入HTML文档中,通常置于服务器端,下载到本地机后,通过浏览器在用户端执行。 Applet类提供了applet程序与所执行环境间的标准接口,同时还提供了applet程序在浏览器上执行的架构,包括init(),start(),stop()和destroy()四个方法。为了绘制窗口,Applet类还定义了paint()方法.
关于Applet和Application的区别:

Applet
的结构:
1.声明一个类:
public class OurApplet extends java.applet.Applet
注意:
此类一定要声明为public,否则浏览器将不能与该类进行交互。也可以将包java.applet中所有的成员导入,然后直接使用Applet类。
     import java.applet.*;
     publicclass OurApplet extends Applet{
        ……
         }
2.如何使用:
Applet嵌套在HTML中的样式:
<HTML>
<APPLETCODE="applet程序名.class" WIDTH=窗口宽度 HEIGHT=窗口高度>
</APPLET>
</HTML>
Java Applet浏览器是指可以运行包含Applet的HTML文件的一切软件系统。HotJava、Netscape Navigator以及Microsoft Internet Explorer等支持Java的网络浏览器都是Applet浏览器,Java Applet都可以在其中运行。
appletviewer是一个Java应用程序,它可以使得用户无须使用网络浏览器而直接运行Java Applet。但appletviewer仅仅是一个Applet浏览器,HTML文件中的其他内容将不会被显示出来。
appletviewer是从java.awt.Frame中继承而来。
使用方法:appletviewer <HTML file or URL>
Applet的运行过程:

(1)Applet源文件首先用 Java 编译器编译:
javac 文件名.java
(2)在与“文件名.class”文件同一目录下创建一个用于显示 Applet 的 HTML 文件“网页文件名.html”:
<html>
<applet code=A.class width=200height=200>
</applet>
</html>
(3)运行 “网页文件名.html”的命令:
appletviewer 文件名.html
Applet的生命周期:
  Applet中没有main()方法。当Applet被浏览器运行时, init() 、start()、paint()、stop()、destroy()方法等自动执行:
init()方法:此方法是程序的入口点,自动调用,在Applet运行期间只执行一次。本方法主要完成Applet的初始化工作。
start()方法:init()之后运行start方法。当Applet被停止(即stop()方法之后)再激活时,start()方法会被再次调用,即在Applet运行期间, start()方法是可能被多次运行的。本方法是Applet的主体,在其中可以执行一些任务或启动相关的线程来执行任务。
paint()方法:在init()及start()方法之后,会运行paint()方法。在此方法中可以放置各种更新Applet窗口的指令。每当浏览器必须更新Applet窗口所显示的内容时,paint()方法都会被运行。
paint()方法中有一个参数,为Graphics类的对象。通过该对象的方法可以输出字符串、图形等。Graphics类在java.awt包中。所以应该先导入该包,然后再应用Graphics类。     
stop()方法:当浏览器离开了包含Applet的网页窗口被缩小到最小时, stop()方法会被运行,以停止消耗系统资源。
destroy()方法:浏览器关闭时自动调用,以清除Applet所用的所有资源。此方法只会被运行一次。另外stop()方法一定会在destroy()方法之前先运行。
一般而言,init()、paint()方法是在Applet子类中必须重写的方法,而是否需要重写其他方法,则应根据设计的需要确定。另外,与paint()方法相关联的两个方法是repaint()、update()方法。 repaint()会调用update(),而update()会在清除窗口画面后调用paint()方法。
Java实例——Applet类各方法功能展现
import java.awt.Graphics;
import javax.swing.JApplet;
public class HelloApplet extends JApplet
  { int initCount=0, stopCount=0,
        startCount=0,paintCount=0,
        destroyCount=0;
    publicvoid init()
     { initCount++;  }
    publicvoid stop()
     { stopCount++;  }
    publicvoid start()
     { startCount++;}
public void destroy()
  { destroyCount++;  }
public void paint(Graphics g)
  {
    paintCount++;
    String outString=
      "init:"+initCount+
      "start:"+startCount+
      "paint:"+ paintCount+
      "stop:"+stopCount+
      "destroy:"+destroyCount;
    g.drawString(outString,50,50);   }
  }
Applet传递参数
<PARAM>属性可以使得Applet能够从页面中获取所需的参数。
Applet可以用其方法getParameter()获取<PARAM>属性指定的参数。
<PARAM>属性的作用与应用程序中main()方法里参数String args[]的作用是一样的。
一个好的小应用程序,应该提供用户能够设置外部参数的功能,以使得用户能够根据自己的需要来应用它。方法getParameterInfo()可以得到有关<PARAM>属性的说明信息。
【例】通过HTML文件向Applet传递参数
(1)传递参数的HTML文件的编写:
<APPLET CODE=ParamApplet.class WIDTH=200HEIGHT=100>
<PARAM NAME=GIRL VALUE=20>
<PARAM NAME=BOY VALUE=30>
</APPLET>
(2)传递参数的 Applet文件的编写
import java.awt.*;
import java.applet.*;
public class ParamApplet extendsApplet{
     int sum;
     Strings1,s2;
     publicvoid init(){
       s1=getParameter(“girl”);
       s2=getParameter(“boy”);
          //需要将字符串转化为整形后才可以进行计算
       sum=Integer.parseInt(s1)+Integer.parseInt(s2);
      }
     publicvoid paint(Graphics g)
   {      g.drawString(“女”+s1+”名,”+”男”+s2+”,共”+sum+”人。”,50,50);    }
}


作者: liuelxiwd    时间: 2013-5-16 16:06
小结:
Java Applet是一种特殊的Java程序,我们称之为“小应用程序”。Applet可以被HTML页面引用,并可以在支持Java的浏览器中执行,可以说Applet具有“激活因特网”的强大功能。
从本质上讲,Applet就是一个扩展了java.applet.Applet类的Java类。Applet类提供了使Applet能在浏览器上执行的骨干结构,而这个骨干是由init、start、stop、destroy这四个方法所构成。利用Applet类提供这四个方法可以构造任意Applet框架。在实际应用中,我们需要重写这些方法来构造自己需要的Applet。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2