Java Applet 基础
Applet 是一种 Java 程序。它一般运行在支持 Java 的 Web 浏览器内
因为它有完整的 Java API 支持,所以 Applet 是一个全功能的 Java 应用程序
注意: Applet 现在几乎没人使用,如果你是为了学习而学习可以继续,如果是初学者,希望你不要继续
独立的 Java 应用程序和 applet 程序之间有很多重要的不同点
- Java 中 Applet 类继承了 java.applet.Applet 类
- Applet 类没有定义 main(),所以一个 Applet 程序不会调用 main() 方法
- Applet 被设计为嵌入在一个 HTML 页面
- 当用户浏览包含 Applet 的 HTML 页面,Applet 的代码就被下载到用户的机器上
- 要查看一个 Applet 需要 JVM。 JVM 可以是 Web 浏览器的一个插件,或一个独立的运行时环境
- 用户机器上的 JVM 创建一个 Applet 类的实例,并调用 Applet 生命周期过程中的各种方法
- Applet 有 Web 浏览器强制执行的严格的安全规则,Applet 的安全机制被称为沙箱安全
- Applet 需要的其他类可以用 Java 归档(JAR)文件的形式下载下来
Applet 的生命周期
Applet 类中的五个方法提供了一个框架,我们可以在该框架上开发小程序
- init: 该方法的目的是为你的 Applet 提供所需的任何初始化。在 Applet 标记内的 param 标签被处理后调用该方法
- start: 浏览器调用 init 方法后,该方法被自动调用。每当用户从其他页面返回到包含 Applet 的页面时,则调用该方法
- stop: 当用户从包含 Applet 的页面移除的时候,该方法自动被调用。因此,可以在相同的 Applet 中反复调用该方法
- destroy: 此方法仅当浏览器正常关闭时调用。因为 Applet 只有在 HTML 网页上有效,所以你不应该在用户离开包含 Applet 的页面后遗漏任何资源
- paint: 该方法在 start() 方法之后立即被调用,或者在 Applet 需要重绘在浏览器的时候调用。paint() 方法实际上继承于 java.awt
"Hello, World" Applet
下面的范例是一个简单的 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);
}
}
import 语句将以下类导入到 Applet 类中
java.applet.Applet
java.awt.Graphics
没有这些 import 语句,Java 编译器就识别不了 Applet 和 Graphics 类
Applet 类
每一个 Applet 都是 java.applet.Applet 类的子类,基础的 Applet 类提供了供衍生类调用的方法,以此来得到浏览器上下文的信息和服务
这些方法做了如下事情
- 得到 Applet 的参数
- 得到包含 Applet 的 HTML 文件的网络位置
- 得到 Applet 类目录的网络位置
- 打印浏览器的状态信息
- 获取一张图片
- 获取一个音频片段
- 播放一个音频片段
- 调整此 Applet 的大小
除此之外,Applet 类还提供了一个接口,该接口供 Viewer 或浏览器来获取 Applet 的信息,并且来控制 Applet 的执行
Viewer 可能是
- 请求 Applet 作者、版本和版权的信息
- 请求 Applet 识别的参数的描述
- 初始化 Applet
- 销毁 Applet
- 开始执行 Applet
- 结束执行 Applet
Applet 类提供了对这些方法的默认实现,这些方法可以在需要的时候重写
"Hello,World" applet 都是按标准编写的
唯一被重写的方法是 paint 方法
Applet 的调用
Applet 是一种 Java 程序
Applet 一般运行在支持 Java 的 Web 浏览器内
因为 Applet 有完整的 Java API 支持,所以 Applet 是一个全功能的 Java 应用程序
下面的代码调用了 "Hello World" applet
The Hello, World Applet