在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); }
}