1. 什么是 Java Applet?
Java Applet 是一种在 Web 浏览器中运行 的 Java 小程序,主要用于创建交互式应用。Applet 运行在 Java 虚拟机(JVM) 中,依赖浏览器支持 Java 插件(如 Java Plug-in)。
2. Applet 的特点
✅ 嵌入网页,与 HTML 结合使用
✅ 跨平台,在支持 Java 的浏览器中运行
✅ 安全性高,运行在受限的“沙箱”环境中,防止恶意操作
✅ 交互性强,支持动画、图形绘制、鼠标和键盘事件
⚠️ 注意: 由于 Java Applet 依赖于浏览器插件,现代浏览器(如 Chrome、Firefox、Edge)已经 不再支持 Applet,推荐使用 JavaFX 或 HTML5+JavaScript 代替。
3. 编写一个简单的 Applet
3.1 继承 Applet 类
Java Applet 需要继承 java.applet.Applet 类,并重写 生命周期方法:
import java.applet.Applet;
import java.awt.Graphics;
public class HelloApplet extends Applet {
@Override
public void paint(Graphics g) {
g.drawString("Hello, Applet!", 50, 50);
}
}
3.2 Applet 生命周期
Java Applet 由浏览器或 AppletViewer 管理,具有以下 生命周期方法:
| 方法 | 作用 |
|---|---|
init() | Applet 初始化,类似于构造方法 |
start() | Applet 开始运行,页面刷新或切换时调用 |
paint(Graphics g) | 绘制图形(如文本、图片) |
stop() | Applet 暂停,页面切换或隐藏时调用 |
destroy() | 释放资源,Applet 关闭时调用 |
示例:
import java.applet.Applet;
import java.awt.Graphics;
public class LifecycleApplet extends Applet {
@Override
public void init() {
System.out.println("Applet 初始化");
}
@Override
public void start() {
System.out.println("Applet 启动");
}
@Override
public void paint(Graphics g) {
g.drawString("生命周期测试", 50, 50);
}
@Override
public void stop() {
System.out.println("Applet 停止");
}
@Override
public void destroy() {
System.out.println("Applet 销毁");
}
}
4. 在 HTML 页面中嵌入 Applet
在 HTML 页面中使用 <applet> 标签加载 Java Applet:
<html>
<body>
<applet code="HelloApplet.class" width="300" height="200">
</applet>
</body>
</html>
⚠️ 注意:现代浏览器 不再支持 <applet> 标签,可以使用 AppletViewer 运行:
appletviewer example.html
5. 处理用户交互(鼠标、键盘事件)
Java Applet 可以通过 MouseListener 和 KeyListener 处理用户交互。
5.1 处理鼠标点击
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class MouseApplet extends Applet {
private String message = "点击 Applet";
@Override
public void init() {
addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
message = "鼠标点击位置: " + e.getX() + ", " + e.getY();
repaint(); // 重新绘制
}
});
}
@Override
public void paint(Graphics g) {
g.drawString(message, 50, 50);
}
}
5.2 处理键盘输入
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class KeyApplet extends Applet {
private String message = "按下键盘";
@Override
public void init() {
addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
message = "按键: " + e.getKeyChar();
repaint();
}
});
setFocusable(true);
}
@Override
public void paint(Graphics g) {
g.drawString(message, 50, 50);
}
}
6. Applet 的局限性
由于 安全性、兼容性 问题,Java Applet 在现代 Web 开发中已 被淘汰:
- 浏览器不再支持(Chrome、Firefox、Edge 已移除 Java 插件)
- 需要 Java 插件,用户体验差
- HTML5、JavaScript、WebGL 取代了 Applet 的大部分功能
- JavaFX 是官方推荐的替代方案
替代方案:
✅ JavaFX(用于桌面 GUI 和 Web 应用)
✅ HTML5 + JavaScript(取代 Applet 的动画、交互功能)
✅ WebAssembly(使用 Java 编译 WebAssembly 运行在浏览器中)
7. 运行 Applet(使用 AppletViewer)
由于浏览器不支持 Applet,可以使用 appletviewer 运行:
appletviewer example.html
或者直接在 Java 代码中创建 Applet 容器:
import javax.swing.*;
import java.applet.Applet;
import java.awt.*;
public class AppletFrame extends JApplet {
@Override
public void init() {
getContentPane().setBackground(Color.CYAN);
JLabel label = new JLabel("Java Applet 在 JFrame 中运行", SwingConstants.CENTER);
add(label);
}
public static void main(String[] args) {
JFrame frame = new JFrame("Applet 容器");
Applet applet = new AppletFrame();
applet.init();
applet.start();
frame.add(applet);
frame.setSize(400, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
8. 总结
| 功能 | Applet | 现代替代方案 |
|---|---|---|
| 网页交互 | applet 标签 | JavaScript + HTML5 |
| 动画/图形 | Graphics API | HTML5 Canvas/WebGL |
| 用户输入 | MouseListener、KeyListener | JavaScript 事件 |
| 桌面应用 | 需要浏览器插件 | JavaFX、Swing |
结论: Java Applet 已过时,推荐使用 JavaFX、HTML5、WebAssembly 进行 Web 开发。
更多详细内容请关注其他相关文章。