Version 3.0
Applet介绍第十章
2
回顾
Java 基本类是作为 AWT 的扩展而开发的
Swing 是 JFC 下的一组类,提供轻量级可视化组件,可用于创建美观的 GUI
Swing 容器有两类:顶级容器、中间容器
Swing标签既可以显示文本也可以显示图像
Swing文本组件
Swing中用于选择性输入的常用组件
菜单是 GUI中非常有用的一部分
3
目标
定义 Applet
区分 Java 应用程序和 Java Applet
描述 Applet 的生命周期
了解如何将参数传递给 Applet
解释如何在 Applet中插入多媒体文件
4
Java Applet基础
Applet 是一种为通过 Web 浏览器在 Internet
上工作而设计的 Java 程序。
Applet 是用 Java编写的小应用程序,它能够嵌入在 HTML网页中,并由支持 Java的
Web浏览器来解释执行。
5
Java Applet 工作原理
HTML
文件嵌入
Applet
www服务器 www服务器
www浏览器请求
HTML
文件下载
HTML
文件 请求Applet
字节码下载 Applet字节码解释执行 Applet字节码
6
从 Web 上下载的 java Applet 是在称为沙箱
(sandbox) 的安全环境中运行的。
大多数浏览器上,在沙箱中运行时:
– Applet 绝不能运行任何一个本地可执行程序 。
– Applet 除了可以与从中下载它们的服务器进行通信外,不能与任何主机通信。
– Applet 不能读写本地计算机的文件系统。
– Applet 不能查找除版本号等以外的任何关于本地计算机的信息。
Applet 的安全性 Applet是设计用于从远程站点加载,然后在本地执行,
因此,安全对于 Applet是至关重要的问题 。
7
Java Applet程序的基本结构
import java.applet.*;
import java.awt.*;
class extends Applet
{
}
类名称类成员声明
8
第一个 Applet程序
import java.awt.*;
import java.applet.*;
public class Firstapplet extends Applet {
String s;
public void init() {
s= "你好,世界 ! ";
}
public void paint(Graphics g){
g.drawString(s,70,80);
}
}
覆盖了 Applet类的 init( )
方法。该方法主要用于初始化 Applet中的变量。
覆盖了 Applet
类的 paint( )方法。
用于在屏幕上给定的位置绘制字符串
9
Applet源文件首先用 Java 编译器编译:
javac Firstapplet.java
创建一个用于显示 Applet 的 HTML 文件:
<html>
<applet code=Firstapplet width=200 height=200>
</applet>
</html>
然后在命令提示符处键入下列代码:
appletviewer Firstapplet.html
编译和运行 Applet
10
要在支持 Java 的浏览器中查看 Applet,则需要加载 HTML 文件。
Applet 会显示为 HTML 网页的一部分。
要运行 Applet,浏览器必须启用 Java 插件。
在浏览器中查看 Applet
11
Applet 和应用程序之间的区别
Applet 应用程序
Applet基本上是为部署在 Web上而设计的应用程序是为作为独立程序工作而设计的
Applet是通过扩展
java.applet.Applet 类创建的应用程序则不受这种限制
Applet 通过 appletviewer或在支持
Java的浏览器上运行应用程序使用 Java解释器运行
Applet 的执行从 init() 方法开始 应用程序的执行从 main() 方法开始
Applet必须至少包含一个 public 类,
否则编译器就会报告一个错误。在该类中不一定要声明 main( )方法。
对于应用程序,public 类中必须包括 main( ),否则无法运行。
12
将应用程序转换为 Applet
可以将一个图形化的 Java应用程序转换成一个 Applet。 步骤如下:
1,取消应用程序中的 main方法 。
2,用 Applet或 JApplet替换 Frame或 JFrame,并将此类设为 public。 否则这个 Applet不能被下载 。
3,去掉应用程序中对窗体的 setSize方法和 setTitle
方法的调用 。
4,将所有的初始化代码从框架窗口构造函数移至 Applet 的 init 方法中 。
13
Applet 的生命周期 2-1
Applet 根据执行过程中发生的事件来定义其生命周期。对于每个事件将自动调用一种方法。方法如下:
- init(),初始化时调用
- start(),调用 init方法之后自动调用这个方法
- stop(),退出网页时停止执行 Applet程序
- destroy(),离线时释放本对象及其相关的资源
14
Applet 的生命周期 2-2
调用 repaint重新绘制 Applet
stop( )
启动状态
start( ) paint( )
Applet 正在工作生成的
Applet
Applet 已显示空闲状态
Applet 已破坏初始状态如果再次调用
sta
rt(
)
destroy( )
破坏
Appletinit( )
15
向 Applet传递参数
可以通过 HTML 文件中的 <param> 标记将参数传递给 Applet。
参数值使用返回字符串的 getParameter( )
方法在 Applet 中检索。
16
向 Applet传递参数示例
import java.awt.*;
import java.applet.*;
public class FontPassDemo extends Applet {
String quote;
Font f;
public void init() {
quote=" Happiness is an attitude.";
String fontname=getParameter("font");
int fontsize=Integer.parseInt(getParameter("size"));
f=new Font(fontname,Font.ITALIC,fontsize);
}
public void paint(Graphics g) {
g.setFont(f);
g.drawString(quote,20,100);
}
}
<html>
<applet code = FontPassDemo width = 400 height = 200>
<param name=font value="Helvetica" >
<param name=size value="28" >
</applet>
</html>
更改参数值将改变字符串显示字体
17
在 Applet中插入多媒体
为了在 Applet 中显示图像,必须执行下列步骤:
1,获得要显示的图像的 URL。
2,决定图像将要显示的位置(坐标)。
3,用适当的方法提供所有这些参数。
可以操纵 Applet 的 paint( ) 方法来显示图像。
18
URL 与获得多媒体文件
一个 URL 只是对 Internet 上一项资源的描述。
例如,http://www.abc.com/。
要检索 Applet 中的图像,必须使用重载的
getImage() 方法之一。例如:
Image img = getImage
("http://www.abc.com/anImage.gif");
19
使用 Applet 显示图像
要显示图像,需要使用 Image 类和 Graphics

getCodeBase()获得基本的 URL
getImage()方法返回可以在屏幕上绘制的
Image 对象
drawImage()具有四个参数,Image 对象、按 x
和 y 坐标表示的位置以及类型为
ImageObserver 的对象
20
使用 Applet 显示图像示例
import java.awt.*;
import java.applet.*;
public class ImageDemo extends Applet {
Image i;
public void init() {
i = getImage(getCodeBase(),"tu.jpg");
}
public void paint(Graphics g) {
g.drawImage(i,20,20,this);
}
}
21
绘制图形 2-1
除了文本,还可以绘制图像、矩形、线条、
多边形以及其他各种图形。
方法 用途
abstract void drawLine(int x1,
int y1,int x2,int y2)
在图形环境坐标系中,从 x1,y1
指定的起始点绘制一条直线到终止点 x2,y2
void drawRect( int topx,int
topy,int width,int height)
绘制一个左上角坐标、宽度和高度已给定的长方形
abstract void fillRect (int topx,
int topy,int width,int height)
绘制一个左上角坐标、宽度和高度已给定的实心长方形
22
绘制图形 2-2
方法 用途
abstract void drawOval(int
topx,int topy,int width,int
height)
绘制一个左上角坐标、宽度和高度已给定的椭圆形
abstract void fillOval(int topx,
int topy,int width,int height)
绘制一个左上角坐标、宽度和高度已给定的实心椭圆形
abstract void drawArc(int x,
int y,int width,int height,int
startangle,int degrees)
绘制一个 x,y 坐标、高度、宽度、
起始角以及跨越的度数已给定的弧形
23
在 Applet 中播放声音
可以通过 getAudioClip 方法检索音频文件。
例如,
AudioClip m=getAudioClip(getDocumentBase(),
"abc.au");
AudioClip getAudiClip(URL url);
AudioClip getAudioClip(URL url,String name);
要使用的是 getDocumentBase 方法,该方法将返回从其中加载 Applet 的 URL
为了播放音频片段,则会调用它的 play 方法。
void play(URL);
void play(URL url,String name);
24
处理 Applet 事件
在 GUI 组件上单击鼠标或按下回车键时将生成事件
在设计 Applet 时,需要捕获这些事件,
并提供需执行的相应操作,以响应每个事件
可以在 Applet 中使用监听器接口处理各种事件。 如,Applet 中的鼠标事件可以通过覆盖 mouseDown( ),mouseUp( ) 和
mouseDrag( ) 方法来完成
25
总结 2-1
Applet 是用 Java编写的小应用程序,它能够嵌入在 HTML网页中,并由支持 Java的 Web
浏览器来解释执行。
每个用户自定义的 Applet 都必须扩展
java.applet.Applet 类。
在 HTML 文件中用 <applet>..</applet> 标记嵌入类文件。
Applet 的缺省布局为 FlowLayout。
26
总结 2-2
通过 paint( ),getImage( ) 和 drawImage( ) 方法可以在 Applet 中绘制图像。
可以在 Applet 中使用监听器接口处理各种事件。
Graphics 类用于在屏幕上绘制文本、线条、
椭圆形和弧形等对象。