0
点赞
收藏
分享

微信扫一扫

Java Applet

程序员知识圈 2022-01-20 阅读 69

Applet 是一种 Java 程序。它一般运行在支持 Java 的 Web 浏览器内。因为它有完整的 Java API支持,所以Applet 是一个全功能的 Java 应用程序。

Applet特点

  • Applet 类继承了 java.applet.Applet 类
  • Applet 类没有定义 main(),所以一个 Applet 程序不会调用 main() 方法
  • Applet 被设计为嵌入在一个 HTML 页面
  • 用户浏览含有Applet的HTML页面时,Applet代码会下载到电脑上
  • 查看Applet需要JVM,或者浏览器的一个插件,并调用Applet生命周期中的方法

Applet生命周期

applet中四个方法提供一个框架

  • init: 为 Applet 提供所需的初始化。在 Applet 标记内的 param 标签被处理后调用该方法。
  • start: 浏览器调用 init 方法后,该方法被自动调用。返回到含 Applet 的页面时,则调用该方法。
  • stop: 从含 Applet 的页面移除时,方法自动被调用。可以在相同的 Applet 中反复调用该方法
  • destroy: 仅当浏览器正常关闭时调用。
  • paint: 在 start() 方法调用之后立即被调用,或者在 Applet 需要重绘在浏览器的时候调用。paint() 方法实际上继承于 java.awt。

简单的applet程序:

import java.applet.*;  //导入applet包  必须要有的
import java.awt.*;

public class HelloWorldApplet extends Applet //继承Applet
{
public void paint (Graphics g)
{
g.drawString ("Hello World", 25, 50);
}
}

Applet 类

基础的 Applet 类提供了供衍生类调用的方法

执行了以下事件:

  • 得到 Applet 的参数
  • 得到包含 Applet 的 HTML 文件的网络位置
  • 得到 Applet 类目录的网络位置
  • 打印浏览器的状态信息
  • 获取一张图片
  • 获取一个音频片段
  • 播放一个音频片段
  • 调整此 Applet 的大小

Applet 类提供了一个接口  Viewer:

  • 请求 Applet 作者、版本和版权的信息
  • 请求 Applet 识别的参数的描述
  • 初始化 Applet
  • 销毁 Applet
  • 开始执行 Applet
  • 结束执行 Applet

 必要的时候对方法进行重写。

Applet 的调用

Applet 是一个全功能的 Java 应用程序。

<html>
<title>The Hello, World Applet</title>
<hr>
<applet code="HelloWorldApplet.class" width="320" height="120"> <!-- width 和 height 用来指定 Applet 运行面板的初始大小-->

</applet>
<hr>
</html>
  • HTML文件中嵌入 Applet 
  • Applet的参数的值需要在 <param> 标签里添加
  • 不支持 Java 的浏览器不能执行 <applet> 和 </applet>。因此,在标签之间显示并且和 applet 没有关系的任何东西,在不支持的 Java 的浏览器里是可见的。
  • codebase用来指定属性
<applet codebase="http://amrood.com/applets"
code="HelloWorldApplet.class" width="320" height="120">

获得applet参数

import java.applet.*;
import java.awt.*;
public class CheckerApplet extends Applet
{
int squareSize = 50;// 初始化默认大小
public void init () {}
private void parseSquareSize (String param) {}
private Color parseColor (String param) {}
public void paint (Graphics g) {}
}
//CheckerApplet 类的 init() 方法
public void init ()
{
String squareSizeParam = getParameter ("squareSize");
parseSquareSize (squareSizeParam);
String colorParam = getParameter ("color");
Color fg = parseColor (colorParam);
setBackground (Color.black);
setForeground (fg);
}
//私有的 parseSquareSize() 方法
private void parseSquareSize (String param)
{
if (param == null) return;
try {
squareSize = Integer.parseInt (param);
}
catch (Exception e) {
// 保留默认值
System.out.println(e.getMessage);
}
}

指定 applet 参数

<html>
<title>Checkerboard Applet</title>
<hr>
<applet code="CheckerApplet.class" width="480" height="320">
<param name="color" value="blue"><!--通过使用 <param> 标签的方法给 applet 指定了两个参数。-->
<param name="squaresize" value="30">
</applet>
<hr>
</html>

事件处理

Applet 类从 Container 类继承了许多事件处理方法,processKeyEvent() 和processMouseEvent(),用来处理特别类型的事件, processEvent()捕获所有事件的方法.

import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.applet.Applet;
import java.awt.Graphics;

public class ExampleEventHandling extends Applet
implements MouseListener {

StringBuffer strBuffer;

public void init() {
addMouseListener(this);
strBuffer = new StringBuffer();
addItem("initializing the applet ");
}

public void start() {
addItem("starting the applet ");
}

public void stop() {
addItem("stopping the applet ");
}

public void destroy() {
addItem("unloading the applet");
}

void addItem(String word) {
System.out.println(word);
strBuffer.append(word);
repaint();
}

public void paint(Graphics g) {

g.drawRect(0, 0, getWidth() - 1,getHeight() - 1);
g.drawString(strBuffer.toString(), 10, 20);
}


public void mouseEntered(MouseEvent event) {
}
public void mouseExited(MouseEvent event) {
}
public void mousePressed(MouseEvent event) {
}
public void mouseReleased(MouseEvent event) {
}

public void mouseClicked(MouseEvent event) {
addItem("mouse clicked! ");
}
}
<html>  <!--调用上面事件的applet-->
<title>Event Handling</title>
<hr>
<applet code="ExampleEventHandling.class"
width="300" height="300">

</applet>
<hr>
</html>

显示图片

import java.applet.*;
import java.awt.*;
import java.net.*;
public class ImageDemo extends Applet
{
private Image image;
private AppletContext context;
public void init()
{
context = this.getAppletContext();
String imageURL = this.getParameter("image");
if(imageURL == null)
{
imageURL = "java.jpg";
}
try
{
URL url = new URL(this.getDocumentBase(), imageURL);
image = context.getImage(url);
}catch(MalformedURLException e)
{
e.printStackTrace();
context.showStatus("Could not load image!");
}
}
public void paint(Graphics g)
{
context.showStatus("Displaying image");
g.drawImage(image, 0, 0, 200, 84, null);
g.drawString("www.javalicense.com", 35, 100);
}
}

调用图片applet

<html>
<title>The ImageDemo applet</title>
<hr>
<applet code="ImageDemo.class" width="300" height="200">
<param name="image" value="java.jpg">
</applet>
<hr>
</html>

播放音频

Applet 能通过使用 java.applet 包中的 AudioClip 接口播放音频。AudioClip 接口定义了三个方法:

  • public void play(): 从一开始播放音频片段一次。
  • public void loop(): 循环播放音频片段
  • public void stop(): 停止播放音频片段

为了得到 AudioClip 对象,必须调用 Applet 类的 getAudioClip() 方法。

import java.applet.*;
import java.awt.*;
import java.net.*;
public class AudioDemo extends Applet
{
private AudioClip clip;
private AppletContext context;
public void init()
{
context = this.getAppletContext();
String audioURL = this.getParameter("audio");
if(audioURL == null)
{
audioURL = "default.au";
}
try
{
URL url = new URL(this.getDocumentBase(), audioURL);
clip = context.getAudioClip(url);
}catch(MalformedURLException e)
{
e.printStackTrace();
context.showStatus("Could not load audio file!");
}
}
public void start()
{
if(clip != null)
{
clip.loop();
}
}
public void stop()
{
if(clip != null)
{
clip.stop();
}
}
}

调用音频applet

<html>
<title>The ImageDemo applet</title>
<hr>
<applet code="ImageDemo.class" width="0" height="0">
<param name="audio" value="test.wav">
</applet>
<hr>

举报

相关推荐

0 条评论