Java Applet 基础
欢马劈雪 最近更新时间:2020-08-04 05:37:59
一个 Applet 是一个运行在网页浏览器上的 Java 程序。一个 Applet 可以使一个全功能的 Java 应用程序因为它在处理上拥有整个 Java API。
在一个 Applet 和一个独立的 Java 应用程序间有一些重要的不同,包括以下方面:
- 一个 Applet 是继承 java.applet.Applet 类的一个 Java 类。
- main() 方法不在 Applet 上被调用,并且一个 applet 类将不定义 main()。
- Applet 程序被设计嵌入到 HTML 页面中。
- 当一个用户查看一个带有 applet 的 HTML 页面,applet 的代码将被下载到用户的机器中。
- 需要 JVM 来查看一个 applet。JVM 可以是一个网页浏览器的一个插件,也可以是单独的运行环境。
- 用户机器上的 JVM 创建了 applet 类的实例并且在 applet 的生命周期中调用不同的方法。
- Applets 有网页浏览器实施的严格的安全规则。一个 applet 程序的安全性常常被称作沙箱安全,这是将 applet 比作一个正在沙箱中的,必须遵守许多规则的孩子。
- 其他 applet 需要的类可以在一个单独的 Java Archive(JAR) 文件中下载。
一个 Applet 的生命周期
Applet 类中的四个方法给了你构建 applet 程序时的框架:
- init: 这个方法适用于你的 applet 程序所需要的任何初始化。它在 applet 标记中的参数标签被处理后被调用。
- start: 这个方法在浏览器调用 init 方法后被自动调用。它也在无论何时使用者在去其他页面后返回到包含 applet 的页面时被调用。
- stop: 这个方法在使用者离开有 applet 所在的页面时被自动调用。因此,它在同一个 applet 中能被重复调用。
- destroy: 这个方法仅当浏览器正常关闭时被自动调用。因为 applet 程序是生存在 HTML 页面上的,你不应该在使用者离开有 applet 的网页后留下资源。
- paint: 在 start() 方法之后被立即调用,或是在 applet 需要在浏览器上重现它自身的任何时候。paint() 方法实际上是继承自 java.awt。
一个 “Hello,World” Applet
以下是一个简单的叫做 HelloWorldApplet.java 的 applet 程序:
import java.applet.*;
import java.awt.*;
public class HelloWorldApplet extends Applet
{
public void paint (Graphics g)
{
g.drawString ("Hello World", 25, 50);
}
}
这些引入的语句把类带入我们的 applet 类的范围内:
- java.applet.Applet.
- java.awt.Graphics.
没有那些引入的语句,Java 编译器将不会认出 applet 类所指的 Applet 和 Graphics 类。
Applet 类
每一个 applet 类都是 java.applet.Applet 类的延伸。基本的 Applet 类提供了一个派生的 Applet 类用来调用从浏览器获取信息和服务的方法。
这还包括了做以下事情的方法:
- 获得 applet 参数
- 获得包含 applet 的 HTML 文件的网络地址
- 获得 applet 类目录的网络地址
- 在浏览器中打印状态信息
- 获取一个图像
- 获取一段音频剪辑
- 播放一段音频剪辑
- 调整 applet 的大小
此外,Applet 类通过观察器和浏览器获得有关 applet 的信息和控制 applet 的执行来提供一个接口。观察者可能:
- 需要作者的信息,版本和 applet 的版权
- 需要 applet 识别的参数的描述
- 初始化 applet
- 销毁 applet
- 开始 applet 的执行
- 停止 applet 的执行
调用一个 Applet 程序
一个 applet 可能被一个 HTML 文件中嵌入的指令文件调用并通过一个 applet 观察器或者支持 Java 的浏览器查看文件。