Java图形用户界面之Applet设计

2024-08-30 23:52

本文主要是介绍Java图形用户界面之Applet设计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Applet设计

  • 前言
  • 一、Applet的基本工作原理与使用局限
    • Applet的基本工作原理
      • 代码示例
    • Java Applet 的使用局限
      • Java沙箱安全机制原理
    • Applet的生命周期与运行方式
  • 二、Applet类
    • Applet类的层次结构
    • 常用方法
      • 生命周期方法
      • 显示方法
      • 多媒体支持方法
      • 其他方法
  • 三、Applet和GUI
    • 基于AWT和Swing的GUI
      • AWT组件与Applet用户界面
        • 代码示例
      • Swing组件与Applet用户界面
        • 代码示例
    • Applet与事件处理
      • 代码示例
  • 四、Applet与多媒体支持
    • 图像显示
      • 代码示例
    • 声音播放
      • 代码示例
  • 五、Applet的参数传递
    • Applet和HTML
    • Applet与参数
      • 代码示例


前言

推荐一个网站给想要了解或者学习人工智能知识的读者,这个网站里内容讲解通俗易懂且风趣幽默,对我帮助很大。我想与大家分享这个宝藏网站,请点击下方链接查看。
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的结构通常包括以下方法:

  1. init():初始化方法,用于设置Applet的初始状态和变量。
  2. start():启动方法,用于开始Applet的执行。
  3. stop():停止方法,用于暂停Applet的执行。
  4. destroy():销毁方法,用于释放Applet占用的资源。

以上方法通过继承Applet类来实现。下面是一个简单的例子:

import java.applet.Applet;
import java.awt.Graphics;public class HelloWorldApplet extends Applet {public void paint(Graphics g) {g.drawString("Hello World!", 20, 20);}}

上面的代码定义了一个名为HelloWorldAppletApplet类,它通过继承Applet类来获取Applet的基本功能。在paint()方法中,我们使用Graphics对象在Applet的画布上输出一条信息“Hello World!”

运行Java Applet需要将其与一个HTML文件一起使用。下面是一个简单的HTML文件示例:

<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),widthheight属性指定了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窗口中输入两个数并求和后显示结果:

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嵌入到网页中:

<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示例:

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处理文本框动作事件和鼠标事件的示例代码:

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显示指定图像的示例代码:

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;@Overridepublic void init() {URL imageURL = getClass().getResource("image.jpg");image = new ImageIcon(imageURL).getImage();}@Overridepublic 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来实现音频文件的播放。以下是一个简单的示例:

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指定参数。例如:

<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文档传入两个整数,并计算它们的最大公约数。

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文档中,可以使用以下代码:

<applet code="GCDApplet.class" width="300" height="200"><param name="num1" value="12"><param name="num2" value="18">
</applet>

在上面的示例中,num1num2是通过<param>元素传递给Applet的两个整数。Applet将计算并显示这两个整数的最大公约数。


这篇关于Java图形用户界面之Applet设计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1122291

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听