概述
导航 用户界面 主题: ) |
Java 小程序是以 Java 字节码形式交付的小程序。Java 小程序可以使用 Java 虚拟机 (JVM) 在 Web 浏览器中运行,也可以在 Oracle 的 AppletViewer 中运行,AppletViewer 是一款用于测试小程序的独立工具。Java 小程序在 1995 年 Java 语言的第一个版本中引入。Java 小程序通常用 Java 编程语言编写,但也可以用其他编译成 Java 字节码的语言编写,例如 Jython。
小程序用于为无法由 HTML 提供的 Web 应用程序提供交互式功能。由于 Java 的字节码是平台无关的,Java 小程序可以被 Windows、Unix、Mac OS 和 Linux 等许多平台的浏览器执行。有像 applet2app 这样的开源工具,可以用来将小程序转换成独立的 Java 应用程序/Windows 可执行文件。这具有在脱机模式下运行 Java 小程序而无需 Internet 浏览器软件的优势。
Java 小程序越来越少地使用。在 2018 年,您只能从 Microsoft Edge 的“兼容模式”和 Firefox 扩展支持版本中使用它。在可能的情况下,您最好使用 JavaScript。
您至少需要创建两个东西:一个 HTML 页面和一个 Java 类。它可以在本地文件夹中完成,无需运行服务器,但更难理解什么是本地,什么是远程。HTML 页面必须使用 <applet/>
标记调用 Java 类。
代码清单 9.3:HelloWorld.html
<!DOCTYPE html>
<html>
<body>
HTML content before the applet.<applet code="HelloWorld" height="40" width="200"></applet>HTML content after the applet.
</body>
</html>
|
将此文件保存在一个文件夹中。由于 <applet/>
标记正在调用一个名为 HelloWorld
的 Java 类,因此我们的类应该被命名为 HelloWorld.java
代码清单 9.4:HelloWorld.java
import java.applet.Applet;
import java.awt.Graphics;
public class HelloWorld extends Applet {
/**
* Print a message on the screen.
*/
public void paint(Graphics g) {
g.drawString("Hello, world!", 20, 10);
}
}
|
保存此文件并在同一个文件夹中编译该类。现在让我们在浏览器中打开网页。
我们很清楚地看到,“Hello, world!”的渲染方式与页面中的其他内容不同。
- 另请参见 applet 标记。
要将 applet 嵌入 HTML 页面,您需要插入 <applet/>
标记。此标记可以具有多个属性
code * |
要调用的主类的名称。它可以是类名,带或不带 .class 。 |
height
|
applet 内容在网页上渲染区域的高度。 |
width
|
applet 内容在网页上渲染区域的宽度。 |
archive
|
具有 .jar 扩展名的压缩 zip 档案的名称。档案可以包含运行 applet 所需的所有类。Applet 通常以这种形式交付,以最大程度地减少下载时间。 |
带有 * 的属性是必需的。
关于 applet
标签的使用已经有一些讨论,但它仍然可以用于入门,并且在现实世界中也能正常工作。
Applet 的构建方式与其他类或主程序不同。入口点不同,主类应该扩展 Applet
类。Applet
类有四个方法可以由浏览器调用,您可以重新定义
init()
|
当浏览器第一次加载 applet 时调用。它只被浏览器执行调用一次。 |
start()
|
当 applet 开始运行时调用。每当用户访问网页时,它都会被调用。 |
stop()
|
当 applet 停止运行时调用。每当用户访问网页时,它都会被调用。 |
destroy()
|
当用户退出浏览器时调用。它只被浏览器执行调用一次。 |
paint()
|
当 applet 需要渲染时调用,例如,当浏览器大小发生改变时。 |
前四个方法定义了 applet 的生命周期。至少要重新定义 init()
或 paint()
。HTML applet 标签可以嵌入 applet 源代码中,以允许 applet 直接由简单的 applet 查看器运行,而无需 .html 文件。通常,applet 标签紧随导入语句之后。它必须用 /* */
注释括起来
代码部分 9.10:MyApplet 注释
/*
<applet code="MyApplet.class"> </applet>
*/
|