前言
推荐一个网站给想要了解或者学习人工智能知识的读者,这个网站里内容讲解通俗易懂且风趣幽默,对我帮助很大。我想与大家分享这个宝藏网站,请点击下方链接查看。 https://www.captainbed.cn/f1 Java Applet 是一种用Java编写的、含有可视化内容并嵌入在网页中、由浏览器软件下载并运行的程序。它的编辑和编译过程与 Java Application(Java 应用程序)相同,但它的结构与 Java 应用程序不同。
Java Applet 没有程序执行的入口 main()方法,不能独立运行,因此 Java Applet 应嵌入在一个网页内,由浏览器软件解释执行。在Java Applet中,可以实现图形绘制、字体和颜色控制、动画和声音的播放、人机交互及网络交流等功能。由于 Java Applet 能够跨平台、跨网络进行传输,而且为网页提供了动态的、交互的内容,因此其在 Internet 上得到了很好的应用。
一、Applet的基本工作原理与使用局限
Applet的基本工作原理
Java Applet 通过<APPLET>
、<IAPPLET>
标签嵌入 HTML 网页,当用户使用浏览器软件浏览这个HTML 页面时,浏览器通过文件名找到 Java Applet 字节码文件并下载到用户的机器上,利用浏览器的Java解释器直接执行该字节码。Applet的基本工作原理如图所示。
由于有浏览器的支持,Applet 不需要建立自己的主流程框架,也不需要有专门的图形界面。Applet 需要做的就是接收和响应浏览器发来的消息或事件。
下面以一个功能简单的Java Applet 为例,介绍 Java Applet的结构及运行过程,它的运行结果是输出一条信息“Hello World!”。
代码示例
ps:Applet自JDK9开始已经被弃用,需要更改JDK
一个简单的Java Applet的结构通常包括以下方法:
init()
:初始化方法,用于设置Applet的初始状态和变量。start()
:启动方法,用于开始Applet的执行。stop()
:停止方法,用于暂停Applet的执行。destroy()
:销毁方法,用于释放Applet占用的资源。
以上方法通过继承Applet类来实现。下面是一个简单的例子:
代码语言:javascript复制import java.applet.Applet;
import java.awt.Graphics;
public class HelloWorldApplet extends Applet {
public void paint(Graphics g) {
g.drawString("Hello World!", 20, 20);
}
}
上面的代码定义了一个名为HelloWorldApplet
的Applet
类,它通过继承Applet
类来获取Applet
的基本功能。在paint
()方法中,我们使用Graphics
对象在Applet
的画布上输出一条信息“Hello World!”
。
运行Java Applet需要将其与一个HTML文件一起使用。下面是一个简单的HTML文件示例:
代码语言:javascript复制<html>
<head>
<title>Hello World Applet</title>
</head>
<body>
<applet code="HelloWorldApplet.class" width="300" height="300">
</applet>
</body>
</html>
上面的HTML文件中,通过使用<applet>
标签将Java Applet嵌入到页面中。code
属性指定了Applet类文件的名称(在这个例子中是HelloWorldApplet.class
),width
和height
属性指定了Applet的宽度和高度。
当浏览器加载HTML文件时,会自动加载并执行Applet类。运行结果会在浏览器中显示一个300x300大小的画布,并输出一条信息“Hello World!”
。
Java Applet 的使用局限
在Java 中将执行程序分成木地代码和远程代码两种。本地代码被视为可信任的,而远程代码则被看作不可信的。对于可信的本地代码,可以访问一切本地资源,如 Jara Application 程序,而Java Applet 是从网络上下载到客户端的远程代码,被视为不可信的。
由于 Applet 的特殊性, Java 出于安全性的考虑,不允许 Applet 随意访问客户端资源,如不允许对本地文件进行读写,而只允许 Applet 在受限的环境中运行,这个限制程序运行的环境就是Java 沙箱。沙箱机制就是将Java 代码限定在虚拟机(JVM)特定的运行范围中,并且严格限制代码对本地系统资源的访问,通过这样的措施来保证对不可信代码进行有效隔离,防止对本地系统造成破坏。下图示意了 Java沙箱安全机制原理。
Java沙箱安全机制原理
由于上述对 Applet的限制,因此 Applet 不能像 Java Application 那样任意访问本地系统资源,如内存、文件系统等。常用的 Web 浏览器,其默认的安全设置也不允许 Java Applet 直接运行。但通过对浏览器的安全级别、数据签名、安全策略的修改和配置,是可以实现Java Applet 对本地资源的访问的。有关技术实现细节,请参阅相关文献资料。
Applet的生命周期与运行方式
Applet的生命周期是指将 Applet下载到本地浏览器,到用户退出测览器终止 Applen 运行的过程。Appler 的生命周期包括Applet 的初始、运行、中止与消亡几个状态,这几个状态与以下几个public 方法, 即 public void init()
、 public void start( )
, public void stop()
和 public void destroy()
密切相关。
init
()方法:用来完成主类实例的初始化工作,如创建和初始化程序运行所需要的对象实例、加载图形和声音、参数初始化等。start
()方法:用来启动浏览器运行 Applet 的主线程。浏览器在调用init
() 方法初始化Applet类的实例之后,就会自动调用start
()方法,除此之外,当用户离开包含 Applet 的页面后又再返回时,或者当浏览器从最小化状态恢复为窗口时,系统都会自动再执行一遍start
()方法。stop
()方法:类似于start
()方法的逆操作,当用户浏览其他页面,或切换到其他系统应用时,浏览器将自动调用stop
() 方法暂停执行 Applet的主线程。destroy
()方法:当用户退出浏览器时,浏览器自动调用 Applet 实例的destroy
()方法完成释放资源、关闭连接等操作。
下图描述了Applet 生命周期状态及4个生命周期方法之间的转换关系。
Applet 运行时,首先由浏览器调用 init
()方法,执行一些初始化操作。该方法常被重写,实现设置布局管理器、绘制窗口、数据初始化、加载图形和声音等功能。在 init
()方法完成后,将调用 start
()方法,Applet 进入运行状态,start
()方法在 Applet 每次显示时都要调用,例如浏览器由最小化恢复显示,浏览器由另外页面返回到Applet所在页面显示。Applet转入后台运行时,调用 stop
()方法暂停 Applet运行,进入中止状态。关闭浏览器时调用 destroy()方法,释放所占用的资源终止Applet的运行。
二、Applet类
Applet类的层次结构
Applet 类是 Java 类库中一个重要的系统类,存在于 java.applet
包中。JApplet 类是Applet类的扩展,增加了对swing 组件的支持。Applet 类和 JApplet 类是所有 Java Applet 应用的基类,所有的 Java 小程序都必须继承它们。Applet 类和 JApplet 类的层次关系如图所示。
Applet 类是Java的系统类java.awt.Panel的子类,因此它也是一个面板容器,其默认布局管理器是FlowLayout, 可以在Applet 面板中添加其他界面成分,如各种 AWT组件。JApplet 是Swing 中的容器,可以在 JApplet 中添加 Swing 组件,其默认布局管理器是BorderLayout。
常用方法
生命周期方法
Applet的生命周期是指将 Applet下载到本地浏览器,到用户退出测览器终止 Applen 运行的过程。Appler 的生命周期包括Applet 的初始、运行、中止与消亡几个状态,这几个状态与以下几个public 方法, 即 public void init()
、 public void start( )
, public void stop()
和 public void destroy()
密切相关。
init
()方法:用来完成主类实例的初始化工作,如创建和初始化程序运行所需要的对象实例、加载图形和声音、参数初始化等。start
()方法:用来启动浏览器运行 Applet 的主线程。浏览器在调用 init () 方法初始化Applet类的实例之后,就会自动调用 start()方法,除此之外,当用户离开包含 Applet 的页面后又再返回时,或者当浏览器从最小化状态恢复为窗口时,系统都会自动再执行一遍 start()方法。stop
()方法:类似于 start ()方法的逆操作,当用户浏览其他页面,或切换到其他系统应用时,浏览器将自动调用stop () 方法暂停执行 Applet的主线程。destroy
()方法:当用户退出浏览器时,浏览器自动调用 Applet 实例的 destroy ()方法完成释放资源、关闭连接等操作。
显示方法
Applet 继承了 Component类的组件绘制与显示的方法,具有一般AWT组件的图形绘制功能。
-
public void paint(Graphics g)
:在 Applet 中绘制指定内容(线条形状、图像、字符串等)。Graphics 类用来完成一些较低级的图形用户界面绘制的类,其中包括画圆、点、线、多边形及显示简单文本。参数g是Graphics类的实例,具体绘制方法由参数g调用.Graphics 类的常用方法如下:drawlmage(Image img, intx, int y, ImageObserver observer)
在(x. y) 起始位置处绘制图像。drawSring(Sring s, int x,int y)
显示字符串,x和y是显示字符串的起始位置。drawLine(int xl, int yl, int x2, int y2)
绘制直线,x1、y1和x2、y2是直线的起点和终止点坐标。drawRect(int x, int y, int width, int height)
绘制矩形。drawOval(int x, int y, int width, int height)
绘制椭圆fillRect(int x, int y, int width, int height)
填充矩形。void setColor(Colorc)
设置画笔颜色。void setBackground(Color c)
设置背景颜色。
-
public void repaint()
:重新绘制方法,在需要绘制时调用该方法。该方法将会自动调用 update()方法实现重绘。 -
public void update(Graphics g)
:更新方法,用背景色清除原有显示内容,再调用paint()完成绘制。
在 Applet 中,显示更新是由一个专门的 AWT 线程控制的。该线程主要负责两种处理:第一,在Applet的初次显示,或运行过程中浏览器窗口大小发生变化而引起 Applet 的显示发生变化时,该线程将调用 Applet 的 paint
()方法进行 Applet 绘制;第二,Applet 代码需要更新显示内容,从程序中调用repaint
()方法,则AWT线程在接收到该方法的调用后,将调用 Applet 的 update
()方法,而update
()方法再调用组件的 paint
()方法实现显示的更新。
多媒体支持方法
public Image gelmage(URL url)
:按绝对 URL 指定的地址装入图像。public Image getimage(URL url, String name)
:按相对 URL 指定的地址和文件名加载图像。此处的参数 name 是相对于 url 的图像文件的表示。
以上两个方法中出现了 URL的两种形式:
- 绝对 URL:
http://210.28.32.169/sjweb/picture/pic.gif
- 相对 URL:
= 基准 URL 相对路径及文件名。
例如:可将绝对 URL 的http://210.28.32.169/sjweb/picture/pic.gif
改写为相对 URL 的表示,基准 URL =http://210.28.32.169/sjweb/。
- 相对路径及文件名=
picture/pic.gif
。
由于相对 URL 具有更大灵活性,因此在实际应用中很常见。
public AudioClip getAudioClip(URL url)
:按绝对 URL 指定的地址获取音频文件。public AudioClip getAudioClip(URL url, String name)
:按相对 URL指定的地址和文件名获取音频文件。public final static newAudioClip(URL url)
:从指定的相对 URL 上获得一个AudioClip对象,然后通过该对象调用 AudioClip 类的 play()、loop()和 stop()播放音频文件。void play(URL url)
:直接播放绝对 URL上的音频文件。void play(URL url, String name)
:播放相对URL 和指定文件名的音频文件。
其他方法
public boolean isActive()
:判断一个 Applet 是否处于活动状态。public URL getDocumentBase()
:获取包含 Applet 字节码的 HTML 文件的 URL。public URL getCodeBase()
:获取 Applet字节码文件的 URL。public String getParameter(String name)
:获取该Applet 指定参数的值。public void resize(int width, int height)
:调整 Applet 运行的窗口尺寸。public void resize(Dimensiond)
:调整Applet 运行的窗口尺寸。public void showStatus(String msg)
:在浏览器的状态条中显示指定的信息。
三、Applet和GUI
Applet 的主要目的是将动态执行与交互功能引入到 Web 页面中,因此几乎所有的Applet 都需要创建 GUI 组件与用户进行动态交互,通过图形、文本等方式显示运行结果和状态。
基于AWT和Swing的GUI
AWT组件与Applet用户界面
Applet 可以通过使用 AWT 组件创建GUI。Applet 是 AWT 的Panel类的子类,其本身就是一个面板,可以像操作其他容器一样,向 Applet 中增加组件并且使用布局管理器控制组件在面板上的位置和大小。Applet 的默认布局管理器是 FlowLayout.
在编写 Applet 的 GUI时,应首先考虑使用哪些组件,如标签(Label)、按钮(Button)、文本框(TextField)等,一般在 init ()方法中创建相应的组件。
代码示例
以下是一个示例代码,用于实现在Applet窗口中输入两个数并求和后显示结果:
代码语言:javascript复制import java.applet.Applet;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class SumApplet extends Applet {
private JTextField firstNumField;
private JTextField secondNumField;
private JLabel resultLabel;
public void init() {
setLayout(new FlowLayout());
firstNumField = new JTextField(10);
secondNumField = new JTextField(10);
resultLabel = new JLabel("Result: ");
JButton addButton = new JButton("Add");
addButton.addActionListener(new ButtonListener());
add(new JLabel("First Number: "));
add(firstNumField);
add(new JLabel("Second Number: "));
add(secondNumField);
add(addButton);
add(resultLabel);
}
private class ButtonListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
String firstNumStr = firstNumField.getText();
String secondNumStr = secondNumField.getText();
double firstNum = Double.parseDouble(firstNumStr);
double secondNum = Double.parseDouble(secondNumStr);
double sum = firstNum secondNum;
resultLabel.setText("Result: " sum);
}
}
}
要在浏览器中运行此Applet,请将代码保存为名为"SumApplet.java
"的文件。然后,在命令行中运行以下命令将其编译为.class
文件:
javac SumApplet.java
然后,使用以下HTML代码将Applet嵌入到网页中:
代码语言:javascript复制<applet code="SumApplet.class" width="400" height="300"></applet>
将上述代码中的"width
"和"height
"属性值调整为您想要的Applet窗口大小。最后,用Web浏览器打开包含上述HTML代码的网页,您应该看到一个可在Applet窗口中输入两个数并求和的界面。
Swing组件与Applet用户界面
使用 Swing 组件的 Applet 可以定义为JApplet 类的子类,JApplet 也是容器的一种,其默认布局管理器是 BorderLayout, 其中可以包含 Swing组件实现 GUI设计。
向JApplet 中添加组件时,既可以直接添加,也可以把组件添加到 Swing Applet 的内容面板。
- 直接向 Applet 窗口中添加各组件。
- 用 getContentPane()方法获得JApplet 的内容面板,再向内容面板中增加组件。
Container contentPane= getContentPane();
contentPane.add(someComponent);
代码示例
以下是一个基于Swing实现的简单Applet示例:
代码语言:javascript复制import javax.swing.*;
import java.awt.*;
public class SwingAppletExample extends JApplet {
public void init() {
// 设置Applet的大小
setSize(400, 300);
// 创建一个面板,并设置背景颜色
JPanel panel = new JPanel();
panel.setBackground(Color.YELLOW);
// 创建一个标签,并设置文本
JLabel label = new JLabel("Hello, Applet!");
label.setFont(new Font("Arial", Font.BOLD, 24));
// 将标签添加到面板上
panel.add(label);
// 将面板添加到Applet上
add(panel);
}
}
要运行这个示例,将上述代码保存为 SwingAppletExample.java
文件,然后使用Java编译器进行编译。编译完成后,可以将生成的 .class
文件嵌入到一个HTML页面中以显示Applet。例如,可以创建一个名为 SwingAppletExample.html
的HTML文件,并将以下代码粘贴到文件中:
<html>
<head>
<title>Swing Applet Example</title>
</head>
<body>
<applet code="SwingAppletExample.class" width="400" height="300">
Your browser does not support the Applet tag.
</applet>
</body>
</html>
然后,通过在浏览器中打开这个HTML文件,就可以看到一个简单的Applet,其中显示了一个带有黄色背景的标签。
Applet与事件处理
Applet中的事件处理机制与Java Application 中相同,采用委托事件模型。
代码示例
下面是一个使用Applet处理文本框动作事件和鼠标事件的示例代码:
代码语言:javascript复制import java.awt.*;
import java.awt.event.*;
public class TextEventApplet extends java.applet.Applet implements ActionListener, MouseListener {
TextField textField;
Label label;
public void init() {
textField = new TextField(20);
label = new Label();
textField.addActionListener(this);
textField.addMouseListener(this);
add(textField);
add(label);
}
public void actionPerformed(ActionEvent e) {
String text = textField.getText();
label.setText("文本框动作事件:" text);
}
public void mouseClicked(MouseEvent e) {
label.setText("鼠标点击事件");
}
public void mouseEntered(MouseEvent e) {
label.setText("鼠标进入文本框");
}
public void mouseExited(MouseEvent e) {
label.setText("鼠标离开文本框");
}
public void mousePressed(MouseEvent e) {
// 不处理
}
public void mouseReleased(MouseEvent e) {
// 不处理
}
}
这个示例创建一个Applet,包含一个文本框和一个标签。文本框用于输入文本,标签用于显示事件的信息。
在init()
方法中,将文本框的动作事件和鼠标事件添加为监听器。当文本框发生动作事件(用户按下回车键)时,actionPerformed()
方法将被调用,该方法从文本框中获取文本并在标签中显示。
当鼠标在文本框上发生点击事件时,mouseClicked()
方法将被调用,在标签中显示相应信息。其他的鼠标事件(鼠标按下、鼠标释放等)在本示例中不进行处理。
四、Applet与多媒体支持
图像显示
目前Java所支持的图像格式有 GIF、JPEG 和 PNG 三种。在Applet 中显示图像要首先加载图像,然后再进行图像绘制。
可以使用 getlmage()
方法进行加载,public Image getlmage(URL ur)
方法不是等到图像完全加载后才返回,而是立即返回。该方法返回的是一个 Image
对象,其中封装了参数指定的图像文件。
绘制图像可以利用 Graphics
类提供的 drawImage()
方法:
public boolean drawImage(Image img, int x, int y, ImageObserver observer)
其中,Image img
表示要绘制的图像对象;int x, int y
表示绘制图像的左上角坐标,以像素为单位;ImageObserver observer
是实现了 ImageObserver
接口类的对象,体现了Java 中追踪图像加载过程的机制,当图像对象的信息一更新,就通知该对象,一般以 this
作为参数的值,即传递当前对象的引用去实现这个接口
代码示例
下面是一个通过Applet显示指定图像的示例代码:
代码语言:javascript复制import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Image;
import java.net.URL;
import javax.swing.ImageIcon;
public class ImageApplet extends Applet {
private Image image;
@Override
public void init() {
URL imageURL = getClass().getResource("image.jpg");
image = new ImageIcon(imageURL).getImage();
}
@Override
public void paint(Graphics g) {
g.drawImage(image, 0, 0, this);
}
}
注意:在上面的示例代码中,假设有一个名为 “image.jpg
” 的图像文件与Applet类文件位于同一目录中。如果图像文件位于不同的位置,需要根据实际情况更改 getResource()
方法的参数。
声音播放
目前 Java 中支持 AU、AIFF、WAV、MIDI、RFM 等多种格式的音频文件格式,可以利用 Applet 类和 AudioClip 接口来播放声音。
- Applet类中与音频播放有关的方法有以下两类。
public AudioClip getAudioClip(...)
:用于加载音频文件,返回一个 AudioClip 对象。public void play(URL url)
:直接播放指定url上的音频文件,如果没有找到指定的文件,该方法直接返回,不执行任何操作。
- AudioClip 是播放音频的援口,其中以下3个方法用于 AudioClip 对象的播放。
public void play()
:从头开始播放音频文件。public void loop()
:循环播放。public void stop()
:停止播放。
一般在 Applet 中音频文件的加载只进行一次,可以放在init()方法中。而音频文件的播放和停止可能进行很多次,可以放在 start()和 stop()方法中,或者通过相应按钮的事件处理方式进行控制。
代码示例
可以使用Java Applet来实现音频文件的播放。以下是一个简单的示例:
代码语言:javascript复制import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.Button;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class AudioPlayerApplet extends Applet implements ActionListener {
private Button playButton;
private Button stopButton;
private AudioClip audioClip;
public void init() {
playButton = new Button("Play");
stopButton = new Button("Stop");
playButton.addActionListener(this);
stopButton.addActionListener(this);
add(playButton);
add(stopButton);
audioClip = getAudioClip(getCodeBase(), "audiofile.wav"); // 替换为实际的音频文件路径
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == playButton) {
audioClip.play();
} else if (e.getSource() == stopButton) {
audioClip.stop();
}
}
}
在HTML文件中使用<applet>
标签来引用Applet:
<!DOCTYPE html>
<html>
<head>
<title>Audio Player Applet</title>
</head>
<body>
<applet code="AudioPlayerApplet.class" width="300" height="200">
</applet>
</body>
</html>
请将上述代码中的audiofile.wav
替换为实际的音频文件路径。此示例创建了一个简单的音频播放器Applet,其中包含播放按钮和停止按钮。当用户点击播放按钮时,音频文件会开始播放;当用户点击停止按钮时,音频文件会停止播放。
请注意,由于浏览器安全性的限制,某些浏览器可能不再支持Java Applet。因此,如果您希望在现代浏览器中使用音频播放功能,可以考虑使用HTML5的<audio>
元素或使用JavaScript库(如Howler.js)来完成音频播放操作。
五、Applet的参数传递
Applet和HTML
由于 Applet 无法独立运行,因此需将 Applet 字节码嵌入到 HTML 网页的<APPLET></APPLET>
标签中,再由浏览器打开该HTML 文楷,由浏览器软件运行 Applet.
例如,在 HelloWorldApplet.html
中包含了一个 APPLET 标记:
<APPLET code= "HelloWorldApplet.class" height=200 width=300></APPLET>
这个标记规定了浏览器要加载 HelloWorldApplet.class
字节码文件,浏览器将到HelloWorldApplet.html
文件所在的URL 寻找该文件。
在<APPLE>
标记的完整语法中可以有若干属性,其中必需的属性是 CODE、
WIDTH、HEIGHT,其余为可选项。
CODE="AppletFile"
:必需属性,它通知浏览器 Applet字节码文件名称。
CODEBASE="codebaseURL"
:可选属性,它指定 Applet 字节码的路径或 URL。当Applet字节码文件的保存位置与所嵌入的HTML 文档不同时,需要用此参数指明字节码文件的位置,该位置用 URL 格式表示。
ALT="alternateText"
:可选属性,它指定在浏览器能识别标记但不能运行Java Applet时显示的提示内容。
ARCHIVE ="archiveList”
可选属性,它描述一个或多个包含有“预加载”的类或其他资源的文档。
OBJECT= "serialiaedApplet”
:可选属性,它给出包含 Applet 序列化表示的文件名。此时init
()方法不调用,start
()方法将被调用。
WIDTH=""
和 HEIGHT=""
:两个必需属性。程序的高度和宽度,单位为像素。
ALIGN='""
:可选属性,指定 Applet 界面区域在浏览器窗口中的对齐方式。
<PARAM NAME="APPLETattribute'" VALUE="value'>
:可选属性,指定向 Applet 传递参数的名字和内容,一个标记只能传递一个字符串参数。在Applet 中使用getParamter()
方法可以得到这些参数值。
Applet与参数
为了增强 Applet的通用性,Applet 允许从HTML 标记中获取参数,程序运行时,不同参数值将导致不同的运行结果。可以在 HTML 文件中,通过中的标记为Applet指定参数。例如:
代码语言:javascript复制<applet code="***.class" width=300 height=200>
<param name=n value="6">
<param name=age value="20">
</applet>
其中用两个<param>
指定了两个参数n和age,它们的值为"6"和"20",n和 age 将会传递其值给 Applet 中的相应接收变量。另一方面,在 Applet 中利用 public String getParameter("参数名”)
方法获取 HTML传递的参数值,并利用该值在 Applet 中进行处理,该方法返回结果为字符串。
代码示例
下面是一个使用Java编写的Applet,可以通过HTML文档传入两个整数,并计算它们的最大公约数。
代码语言:javascript复制import java.applet.Applet;
import java.awt.Graphics;
public class GCDApplet extends Applet {
private int num1;
private int num2;
private int gcd;
public void init() {
String strNum1 = getParameter("num1");
String strNum2 = getParameter("num2");
try {
num1 = Integer.parseInt(strNum1);
num2 = Integer.parseInt(strNum2);
} catch (NumberFormatException e) {
num1 = 0;
num2 = 0;
}
gcd = calculateGCD(num1, num2);
}
private int calculateGCD(int a, int b) {
if (b == 0) {
return a;
} else {
return calculateGCD(b, a % b);
}
}
public void paint(Graphics g) {
g.drawString("num1: " num1, 10, 20);
g.drawString("num2: " num2, 10, 40);
g.drawString("GCD: " gcd, 10, 60);
}
}
要将此Applet嵌入到HTML文档中,可以使用以下代码:
代码语言:javascript复制<applet code="GCDApplet.class" width="300" height="200">
<param name="num1" value="12">
<param name="num2" value="18">
</applet>
在上面的示例中,num1
和num2
是通过<param>
元素传递给Applet的两个整数。Applet将计算并显示这两个整数的最大公约数。