Java Applet 基础
                           
天天向上
发布: 2025-03-03 23:22:42

原创
300 人浏览过

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 可以通过 MouseListenerKeyListener 处理用户交互。

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 开发中已 被淘汰

  1. 浏览器不再支持(Chrome、Firefox、Edge 已移除 Java 插件)
  2. 需要 Java 插件,用户体验差
  3. HTML5、JavaScript、WebGL 取代了 Applet 的大部分功能
  4. 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 APIHTML5 Canvas/WebGL
用户输入MouseListenerKeyListenerJavaScript 事件
桌面应用需要浏览器插件JavaFX、Swing

结论: Java Applet 已过时,推荐使用 JavaFX、HTML5、WebAssembly 进行 Web 开发。


更多详细内容请关注其他相关文章。

发表回复 0

Your email address will not be published. Required fields are marked *