27
南南南南南南南南南南南南南 西 南南南南南南南 (Java) 第第第第 Java Applet

西南科技大学网络教育系列课程 高级语程序设计 (Java)

  • Upload
    ravi

  • View
    130

  • Download
    0

Embed Size (px)

DESCRIPTION

西南科技大学网络教育系列课程 高级语程序设计 (Java). 第十二章 Java Applet. Applet 的工作原理. Applet 概述 Applet 是用 Java 编写的小应用程序,它能够嵌入在 HTML 网页中,并由支持 Java 的 Web 浏览器来解释执行。 A pplet 最早是用于应用程序的发布,这一功能已被 Java Web Start 代替。 现广泛用于主从架构或网络程序设计。. Applet 与 HTML 不在一个目录,定义调用的 Applet 的路径. Applet 与其他元素的水平和竖直边距. Applet 程序显示区的宽度和高度. - PowerPoint PPT Presentation

Citation preview

Page 1: 西南科技大学网络教育系列课程 高级语程序设计 (Java)

西南科技大学网络教育系列课程高级语程序设计 (Java)

第十二章 Java Applet

Page 2: 西南科技大学网络教育系列课程 高级语程序设计 (Java)

高级语言程序设计 (Java) http://www.swust.net.cn

Applet 概述 Applet 是用 Java 编写的小应用程序,它能够嵌入在 HTML 网页中,并由支持 Java 的Web 浏览器来解释执行。

Applet 最早是用于应用程序的发布,这一功能已被 Java Web Start 代替。

现广泛用于主从架构或网络程序设计。

Applet 的工作原理

Page 3: 西南科技大学网络教育系列课程 高级语程序设计 (Java)

高级语言程序设计 (Java) http://www.swust.net.cn

首先确定 Applet 的存在 (*.class 文件 ) 。使用 Applet ,格式:

<Applet code=“*.class” codebase=“jbase”

width=200 height=200 vspace=2 hspace=3

align=“top” name=“java01” alt=“ 不支持

Applet”></Applet>

Applet 和 HTML

定义调用的 Applet 程序名,注意全名和大小写。

Applet 与 HTML不在一个目录,定义调用的 Applet 的路径

Applet 程序显示区的宽度和高度 Applet 与其他元素的水平和竖直边距

Applet 的对齐方式 Applet 的名字。 浏览器不支持 Applet时,显示的代替文字。

Page 4: 西南科技大学网络教育系列课程 高级语程序设计 (Java)

高级语言程序设计 (Java) http://www.swust.net.cn

Applet 的安全机制 从 Web 上下载的 java applet 是在称为沙箱

(sandbox) 的安全环境中运行。 applet 绝不能运行任何本地可执行程序。 applet 除了可以与从中下载它们的服务器进行通信外,不能与任何主机通信。

applet 不能读写本地计算机的文件系统。 applet 不能获取除版本等以外的任何关于本地计算机的信息。

applet 弹初式窗口都回带有一个警告信息。 applet 可以使用签名方式来获取更大的权限。

Page 5: 西南科技大学网络教育系列课程 高级语程序设计 (Java)

高级语言程序设计 (Java) http://www.swust.net.cn

Applet 的生命周期

下载实例化

init() 初始化 start() 启动

stop() 暂停 destroy() 终止

启动

转入后台 重新

激活

退出

Page 6: 西南科技大学网络教育系列课程 高级语程序设计 (Java)

高级语言程序设计 (Java) http://www.swust.net.cn

Applet 主要方法 根据执行过程中发生的事件来定义生命周期,对于每个事件将自动调用一种方法。

init() :初始化时调用,主要是创建所需要的对象、设置初始状态、设置参数等。

start() :调用 init 方法之后自动调用这个方法。

stop() :退出网页时停止执行 Applet 程序。 destroy() :离线时释放本对象及其相关的资源。

paint(Graphics g) :绘制 Applet 图形。

Page 7: 西南科技大学网络教育系列课程 高级语程序设计 (Java)

高级语言程序设计 (Java) http://www.swust.net.cn

Applet 图形的显示和刷新 Applet 图形的显示和刷新由三个方法完成: paint(),repaint(),update() ,都是从 java.awt.component 类继承来的 Applet 图形的显示和刷新由一个独立线程控制,称为 AWT 线程

如果 Applet 部分显示内容被其他窗口覆盖,那么其他窗口移开或关闭时,曾被覆盖部分必须重画,此时 AWT 线程会自动调用 paint() 方法 程序更新显示内容,可以使用 repaint() 方法通知系统要更新显示的内容,此时 AWT 线程会自动调用 update() 方法清空当前画面,然后调用 paint() 方法绘制新的内容

Page 8: 西南科技大学网络教育系列课程 高级语程序设计 (Java)

高级语言程序设计 (Java) http://www.swust.net.cn

Applet 的创建 编写 Applet 时,必须注意下列问题

在 Applet 原程序文件中的开始,必须包含一些包,即有如下语句: import java.applet.* 或 import java.applet.Applet必须有一个类声明为 public ,而且文件名必须与类名保持一致,该类必须继承自 java.applet.Applet ,完整的声明如:public class MyFirstApplet extends Applet

Page 9: 西南科技大学网络教育系列课程 高级语程序设计 (Java)

高级语言程序设计 (Java) http://www.swust.net.cn

Applet 的结构 import java.awt.*;import java.applet.*;public class AppletClassName extends Applet{public void init(){ // 初始化变量、装载图片、读取参数值等}public void start(){ // 启动程序执行或恢复程序执行 }public void stop(){ // 挂起正在执行的程序,暂停程序的执行 }public void destroy(){ // 终止程序的执行释放资源 }public void paint(Graphics g){ // 完成绘制图形等操作 }}

Page 10: 西南科技大学网络教育系列课程 高级语程序设计 (Java)

高级语言程序设计 (Java) http://www.swust.net.cn

import java.awt.Graphics;import java.applet.Applet; public class JavaApplet extends Applet { String print_text; public void init() { print_text = “Java Applet"; }  public void paint(Graphics g){ g.drawString(print_text, 20, 20); }}

Applet 示例 重写了 Applet类的 init( ) 方法。

覆盖了 Applet类的paint( )方法。

用于在屏幕上给定的位置绘制字符串

Page 11: 西南科技大学网络教育系列课程 高级语程序设计 (Java)

高级语言程序设计 (Java) http://www.swust.net.cn

Applet 和 Application

Applet 应用程序

Applet 基本上是为部署在 Web 上而设计的

应用程序是为作为独立程序工作而设计的

Applet 是通过扩展 java.applet.Applet 类创建的

应用程序则不受这种限制

Applet 通过 appletviewer 或在支持 Java 的浏览器上运行

应用程序使用 Java 解释器运行

Applet 的执行从 init() 方法开始 应用程序的执行从 main() 方法开始

Applet 必须至少包含一个 public 类,否则编译器就会报告一个错误。在该类中没有 main( ) 方法。

对于应用程序, public 类中必须包括 main( ) ,否则无法运行。

Page 12: 西南科技大学网络教育系列课程 高级语程序设计 (Java)

高级语言程序设计 (Java) http://www.swust.net.cn

网页向 Java Applet 传值 在超文本中使用若干个 <Param…>标志把值传递到 Java Applet 中,实现动态地向程序传递信息,不必重新编译程序,便于程序的维护和使用。

如:<applet code= “NetPageExample.class” width=“200” height=“200”> <Param name="girl" value ="160"> <Param name="boy" value ="175"></applet>

public String getParameter(String name)如: String s1 = this. getParameter(“girl”);

Page 13: 西南科技大学网络教育系列课程 高级语程序设计 (Java)

高级语言程序设计 (Java) http://www.swust.net.cn

Java Applet 中播放声音

用 Java 可以编写播 .au .aiff .wav .midi .rfm 格式的音频。 在 Java Applet 中播放声音,可以使用 Applet的一个方法:

静态的方法:newAudioClip(URL url,String name)

实例方法:getAudioClip(Url url,String name)

处理声音文件的方法play() 播放声音文件 loop() 循环播放stop() 停止播放。

Page 14: 西南科技大学网络教育系列课程 高级语程序设计 (Java)

高级语言程序设计 (Java) http://www.swust.net.cn

Java Applet 中使用 AWT组件 Applet 类是容器类 Container 的间接子类。 可以在这个容器中添加组件,处理组件事件。 目前的浏览器仅仅支持 JDK1.1 版本中的类库 ,Java Applet 中只能使用 JDK1.1 版本公布的 java.awt 包中的组件。如:public void init() {

add(new Button(“Test”); }

Applet 的默认布局为 FlowLayout

Page 15: 西南科技大学网络教育系列课程 高级语程序设计 (Java)

高级语言程序设计 (Java) http://www.swust.net.cn

Java Applet 中使用 Swing组件

SDK1.4 以后的版本,浏览器中的 JVM就会被更新为当前 SDK 所带的 JVM 。 浏览器就可以使用 javax.awing 包中的组件。 使用 javax.swing 包中的组件时, Java Applet 的主类应当是 JApplet 的子类。 JApplet 是 Applet 的一个直接子类,在 javax.swing 包中。

Page 16: 西南科技大学网络教育系列课程 高级语程序设计 (Java)

高级语言程序设计 (Java) http://www.swust.net.cn

JApplet 新特性: 不可以把组件直接添加到 JApplet 容器中。 JApplet 容器也含有一个称为内容面板的容器,应当把组件添加到内容面板中。 不能为 JApplet 容器设置布局,而应当为 JApplet 容器的内容面板设置布局。 内容面板的默认布局是 BorderLayout 布局。

JApplet 容器通过调用方法: getContentPane() ,得到内容面板。

Page 17: 西南科技大学网络教育系列课程 高级语程序设计 (Java)

高级语言程序设计 (Java) http://www.swust.net.cn

Java Applet 中绘制图形绘制文本

使用 drawString 方法在屏幕上显示字符串对象。

drawString(String s, int x, int y) :从参数 x 、y指定的坐标位置处,从左向右绘制参数 s指定的字符串。 drawChars(char data[ ],int offset, int length, int x, int y) :绘制 data 数组中的部分字符。

length指定数组中要连续绘制的字符的个数。offset 是首字符在数组中的位置 。

Page 18: 西南科技大学网络教育系列课程 高级语程序设计 (Java)

高级语言程序设计 (Java) http://www.swust.net.cn

绘制直线drawLine(int x1,int y1,int x2,int y2) :绘制从起点 (x1,y1)到终点 (x2,y2) 的直线段。

绘制矩形 drawRect (int x,int y,int w,int h) :绘制矩形。 fillRect (int x,int y,int w,int h) :填充矩形。 矩形的左上角的坐标由参数 x 、 y指定,矩形的宽和高由参数 w 、 h指定。

Page 19: 西南科技大学网络教育系列课程 高级语程序设计 (Java)

高级语言程序设计 (Java) http://www.swust.net.cn

绘制圆角矩形 drawRoundRect(int x,int y,int w,int h,int arcW,int arcH) :绘制圆角矩形 fillRoundRect(int x,int y,int w,int h,int arcW,int arcH) :填充圆角矩形 参数 arcW 、 arcH指定圆角的尺寸。

绘制椭圆 drawOval(int x,int y,int w,int h) :绘制椭圆。 fillOval(int x,int y,int w,int h) :绘制填充椭圆。 x 、 y给出椭圆距 x轴和 y轴的距离,参数 w 、h给出椭圆的宽和高。

Page 20: 西南科技大学网络教育系列课程 高级语程序设计 (Java)

高级语言程序设计 (Java) http://www.swust.net.cn

绘制圆弧 圆弧就是某个椭圆的一部分。 drawArc(int x,int y,int width,int height,int starAngle, int arcAngle) :绘制圆弧。 fillArc(int x,int y,int width,int height,int starAngle,int arcAngle) :填充圆弧。 x 、 y 、 width 、 heigth指定圆弧的位置和大小。 参数 starAngle 和 arcAngle 的单位都是“度”。 参数 starAngle , arcAngle表示从 starAngle的角度开始逆时针或顺时针方向画 arcAngle度的弧。

正值 负值

Page 21: 西南科技大学网络教育系列课程 高级语程序设计 (Java)

高级语言程序设计 (Java) http://www.swust.net.cn

Java Applet 中绘制图像

图像是矩形内的一组像素。 Java 支持两种主要的图像格式:

GIF JPEG Applet 类提供了一个重要的方法:

public Image getImage(URL url,String name) :返回可以被显示在屏幕上的 Image 对象的引用,即将 URL 地址中,文件名为 name 的文件加载的内存,并返回该内存的首地址。

Page 22: 西南科技大学网络教育系列课程 高级语程序设计 (Java)

高级语言程序设计 (Java) http://www.swust.net.cn

Java Applet 显示 java目录中的图像的方法: public URL getCodeBase() :返回一个 URL 对象,该对象包含 Java Applet 所在的目录。 public URL getDocumentBase() :返回一个嵌入Java Applet 的网页的 URL 对象。 public boolean drawImage(Image img,int x,int y,ImageObserver observer) :绘制 img 对象。

x , y 是要绘制指定图像的矩形的左上角所处的位置。observer 是加载图像时的图像观察器。

Page 23: 西南科技大学网络教育系列课程 高级语程序设计 (Java)

高级语言程序设计 (Java) http://www.swust.net.cn

Applet 类已经实现了 ImageObserver接口,它可以作为加载图像时的图像观察器。 将 this 作为最后一个参数传递给 drawImage()便可将 Applet 对象传递过去, public void paint(Graphics g) { g.drawImage(img,0,3,this); }

public boolean drawImage(Image img,int x,int y,int width ,int height , ImageObserver observer) :在矩形内绘制加载的图像。

Page 24: 西南科技大学网络教育系列课程 高级语程序设计 (Java)

高级语言程序设计 (Java) http://www.swust.net.cn

获取图像的属性: img.getHeight(this) :获取被加载的图像的高。 img.getWidth(this) :获取被加载的图像的宽。 例:public void init() { img1 = getImage(getCodeBase(),"tom.jpg"); img2 = getImage(getCodeBase(),"jerry.jpg");}public void paint(Graphics g) { g.drawImage(img1,0,0,100,100,this); g.drawImage(img2,120,120,200,100,this);}

Page 25: 西南科技大学网络教育系列课程 高级语程序设计 (Java)

高级语言程序设计 (Java) http://www.swust.net.cn

Java Applet 播放幻灯片和动画

Java Applet播放幻灯片在 HTML 中播放图像切换幻灯片。

Java Applet播放动画使用多线程技术实现 Applet 中动画的播放。 动画是一种错觉,运动的错觉是通过快速显示一组图片造成的,而这些图片在内容上只有微小的变化。

Page 26: 西南科技大学网络教育系列课程 高级语程序设计 (Java)

高级语言程序设计 (Java) http://www.swust.net.cn

Java Applet 的网络功能

使用 URL常用方法

public AppletContext getAppletContext() :返回一个 AppletContext 对象,称作 Java Ap

plet 所在的运行环境。 void showDocument(URL url)返回一个 App

letContext 对象。

Page 27: 西南科技大学网络教育系列课程 高级语程序设计 (Java)

高级语言程序设计 (Java) http://www.swust.net.cn

使用套接字 Java Applet 程序的字节码驻留在服务器端,需要下载到客户端的浏览器来运行。 JavaApplet 程序是客户端程序。 Java Applet 程序只能和它所驻留的服务器建立套接字连接。 public URL getDocumentBase() :返回一个嵌入 Java Applet 的网页的 URL 对象。