第10章 Applet程序设计 Flashcards

1
Q

Applet概述

A

Applet(小应用程序)是Java与Web相结合而引入的一种重要的Java应用形式,它不仅使Web页具有动画、声音、图像和其他特殊效果,更重要的是可以使Web页能够与用户动态进行交互,接收用户的输入,然后根据用户的输入作出不同的反应。
1Applet的概念
Applet是能够嵌入到HTML页面中,并能够在浏览器中运行的Java类。Applet自身不能运行,必须嵌入在其他应用程序中运行。Applet与Application的主要区别在于执行方式上:Application以main()方法为入口点运行,而Applet要在浏览器或appletviewer中运行,运行过程要比Application复杂。
Applet的运行过程经历了如下4个步骤:
①浏览器加载指定URL中的HTML文件;
②浏览器解析HTML文件;
③浏览器加载HTML文件中指定的Applet类;
④浏览器中的Java运行环境运行该Applet。
2、Applet的生命周期概念
Applet生命周期是指从Applet下载到浏览器,到用户退出浏览器,终止Applet运行的过程。Applet生命周期包括Applet的创建、运行与消亡几个状态。
(1)加载Applet
当一个Applet被下载到本地系统时,将了生如下操作
①产生一个Applet主类的实例。
②对Applet自身进行初始化。
③启动Applet运行,将Applet完全显示出来。
(2)离开或者返回Applet所在Web页
当用户离开Applet所在的Web页(比如转到另一页面),Applet将停止自身运行。而当用户又返回到Applet所在的Web页时,Applet又一次启动运行。
(3)重新加载Applet
当用户执行浏览器的刷新操作时,浏览器将先卸载该Applet,再加载该Applet。在这个过程中,Applet先停止自身的运行,接着实行善后处理,释放Applet占用的所有资源,然后加载Applet,加载过程与前面的加载过程相同。
(4)退出浏览器
当用户退出浏览吕时,Applet停止自身执行,实行善后处理,才让浏览器退出。
小应用程序Simple在运行过程中,在生命周期状态发生变化时也将描述性信息输出在Java运行系统的控制台上。
3、Applet的类层次结构
任何嵌入在Web页面中或appletviever中的Applet必须是Java中Applet类的子类。Applet在定义了Applet与其运行环境之间的一个标准接口,主要包括Applet生命周期,环境交互等一些方法。JApplet是Applet类的扩展,它增加了对JFC/Swing构件结构的支持。Applet是java.awt.panel类的直接子类。
Applet是一个面板容器,它默认使用Folw布局管理器。所以可以在Applet中设置并操作AWT构件。Applet类可继承Component、Container和Panel类的方法javax.swing.JApplet是Swing的一种顶层容器,可以在JApplet中添加Swing构件并进行操作而javax.swing.JApplet是Applet类的子类,继承了Applet的方法与执行机制。
4、Applet类API概述
生成Applet必须创建Applet类的子类,Applet的行为框架由Applet类来决定。
(1)生命周期方法
Applet的生命周期概念中描述了Aplet的生命周期。Applet类中提供了在生命周期不同阶段响应主要事件的4种方法,这些方法是:
①void init(),在Applet被下载时调用,一般用来完成所在必需的初始化操作。
②void start(),在Applet初始化之后以及Applet被重新访问时调用。
③void stop(),在Applet停止执行时调用。一般发生在Applet rn d r Web而被其他页覆盖时调用。
④void destyoy(),在关闭浏览器Applet从系统中撤出时调用。 stop()总是在此之前被调用。
一个Applet不必全闻重写这些方法。但是如果Applet使用了线程,需要自己释放资源,则必须重写相应的生命周期方法。
(2)HTML标记方法
HTML标记方法用于获取HTML文件中关于Applet的信息,这些方法有:
①URlL getDocumentBase(),返回包含Applet的HTML文件的UR
②URL getCodeBase(),返回Applet主类的URL,它可以不同于包含Applet的HTML文件的URL。
③String getParameter(string name),返回定义在HTML文件的标记中指定参数的值。如果指定参数在HTML中无说明,该方法将返回“null”。
(3)多媒体支持方法
Applet类提供了从指定的URL获取图像和声音的方法,使Applet可以很方便地实现多媒体功能。当图像数据通过网络下载时,由于受网络带宽等因素的限制,用户在浏览器中看到的一般是渐渐增长的图像显示过程。
①Image getImage(URL url),返回能够显示在屏幕上的图像对象。参数url是一个绝对的URL。无论图像是否存在,该方法将立即返回,只有在图像需要被显示时数据才真正被加载。
②Image getImage(URL url,String naem),按指定的URL以及相对于该URL的图像文件名获取图像。
③AudioClip getAudioClip(URL url),获取指定URL点上的声音数据,返回一个类型为AudioClip的对象,通过该对象可以实现声音演播。
④AudioClip getAudioClip(URL url,String name),按指定的URL以及相对于该URL的声音文件名获取声音数据。
⑤void play(URL url),直接演播指定URL地址上的声音文件。
⑥void play(URL url,String name),直接演示指定的URL地址上的指定声音文件名的声音文件。
(4)管理Applet环境的方法
Applet能够与其运行的环境进行交互。但是Applet环境的管理只是提供一些有限的支持,因为各种浏览器可能具有不同的特性。
①AppletContext getAppletConext(),返回一个AppletContext类的实例,通过这个实例Applet可以管理它的环境。
②Applet getApplet(string name),返回名为name的Applet。该名字在HTML标记中通过NAME属性说明。如果在同一Web页上不存在名为name的Applet,该方法返回值为空。
③Enumeration getApplets(),返回当前Web页上的所有的Applet的列表。为保证安全性,该方法得到的返回集中的Applet都是与调用此方法的Applet来自同一主机。
④void showDocument(URL url),用指定的URL转换当前Web页。
(5)Applet信息报告方法
Applet信息报告方法使Applet能简便地向用户报行一些Spplet的相关信息,如参数信息等。
①void ShowStatus(String status),在浏览器状态栏上显示字符串。
②String getAppletInfo(),报告关于Applet的作者、版权、版号等有关信息。
③String[ ][ ]getparameterInfo(),返回描述Applet参数的字符串数组。
5、Applet的关键方法
Applet的关键方法主要指Applet生命周期方法以及Applet显示方法
(1)init()
Applet运行时,首先由浏览器调用init()方法,通知该Applet已被加载到浏览器中,使Applet执行一些基本初绐化。该方法经常被重写,实现设置布局管理器、数据初始化、放置一些构件等功能。
(2)start()
在init()方法完成后,将调用start()方法,使Applet成为激活状态。该方法在Applet每次显示时都要调用。
(3)stop()
当Applet被覆盖时,可用该方法停止线程。start()与stop()是一对相对应的方法,一般start()启动一些动作,而在stop()中暂停这些动作。
(4)destroy()
关闭浏览器时调用,彻底终止Applet,从内存卸载并释放该Applet的所有资源。
(5)paint(Graphics g) 画Applet是工作在图形方式下的。向Applet中画图、画图像、显示字符串,都要用paint()方法。每当Applet初次显示或更新时,浏览器都将调用paint()方法。paint()方法有一个参数,java.awt.Graphics类的实例。该实例包含了组成Applet的Panel的图形上下文信息。可以利用这个上下文信息向Applet中写入信息。
在Applet生命周期中,有4种方法可被调用:
①init(),在装载Applet时被调用。
②start(),在init()方法之后被调用。
③stop(),在浏览器离开含有Applet的网页时被调用。
④destroy(),在浏览器完全关闭之前被调用。
6、Applet的显示
  Applet是Component类的子类,继承了Component类的构件绘制、显示的方法,具有一般AWT构件的图形绘制功能。这些方法是:paint()方法、update()方法和repaint()方法。
在Applet 中,Applet的显示更新是由一个专门的AWT线程控制的。该线程主要负责两种处理:第一种是在Applet的初次显示,或运行过程中浏览器窗口大小发生变化而引起Applet的显示发生变化时,该线程将调用Applet的paint()方法进行Applet绘制;第二种处理是Applet代码需要更新显示内容从程序中调用repaint()方法,则AWT线程在接受到该方法的调用后,将调用Applet的update()方法,而update()方法再调用构件的paint()方法实现显示的更新。
(1)Applet显示相关的3个方法
①paint()方法。Applet和paint()方法具体执行Applet的z绘制。该方法的定义如下:
public void paint(Graphics g)
paint()方法有一个参数g是Graphics类的实例,该实例对象由浏览器生成,它包含了Applet的图形上下文信息,通过它向Applet中显示信息,该对象相当于Applet的画笔。在调用paint()方法时,由浏览器将该对象传递给paint()方法。
②update()方法。update()方法的定义如下:
public void update(Graphics g)
updatd()方法用于更新Applet的显示。该方法将首先清除背景,再调用paint()方法完成Applet的具体绘制。用户定义的Applet一般不用重写该方法。
③repaint()方法。repaint()方法的定义如下:
public void repaint()
repaint()方法主要用于Applet的重新显示,它调用update()方法实现对Applet的更新。Applet程序可以在需要显示更新时调用该方法,通知系统刷新显示。
(2)Graphics类
Graphics类在java.awt包中,它是Applet进行绘制的关键类。Graphics类支持基本绘图,如输出文字、画线、矩形、圆等几何图形,另外还支持图像的显示,Applet显示所用到的方法update()和paint()都使用由浏览器传递的Graphics类对象。
Graphics类中提供的绘图方法分为两类:一类是绘制图形,另一类是绘制文本,下面分别介绍。
①Graphics类的图形绘制方法。Graphics类定义了绘制各种图形的丰富方法,这些方法包括:
●画线(drawLine)。
●画矩形(drawRect and fillRect)。
●画立体矩形(draw3DRect and fill3DRect)。
●画圆角矩形(drawRoundRect and fillRoundRect)。
●画椭圆(drawOval and fillOval)。
  ●画弧(drawArc and fillArc)。
●画多边形(drawPolygon、drawPolyline and fillPolygon)。
②Graphics类显示文本方法。Graphics类显示广西的方法主要有:
●public void drawBytes(byte[ ]data,int offset,int length,int x,int y);
●public void drawChars(char[ ]data,int offset,intlength,int x,int y);
●public abstract void draw(String str,int x,int y)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Applet的编写

A

1、Applet编写的步骤
Applet要在Java兼容的浏览器中运行,开发一个Applet包括如下步骤:
(1)引入需要的类和包
import java.applet.Applet;
imort java.awt.Graphics;
(2)定义一个Applet类的子类
第个Applet必须定义为Applet类的子类。Applet从Applet类继承了很多功能,包括与浏览器的通信、显示图形化用户界面GUI等。
(3)Applet类的某些方法
第个Applet必须至少实现init()、start()和paint()中的一个方法。与Java Application不同,Applet不需要实现main()方法。
(4)Applet嵌入在HTML页面中运行
Applet要嵌入在HTML页面中才能运行。通过使用标记,至少要指定Applet子类的位置以及浏览器中Applet的显示尺寸。当支持Java的浏览器遇到标签时,将为Applet在屏幕上保留空间,并把Applet子类下载到浏览器所在的计算机,创建该子类的实例。
一个Applet可以定义多个类。除了必要的Applet子类,Applet可以定义其他自定义的类。当Applet要使用另一个类时,运行Applet的程序(如浏览器)首先在本机上寻找该类,如果没有找到,则到Applet子类来源的主机上下载。
编写基于Swing的Applet时,必须使用如下格式创建一个类:
improt javax.swing.*;
public class HelloWorld extends JApplet{
同样,对JApplet而言,类必须被声明为public,因此文件名必须与类名保持一致。
3、在HTML页中包含Applet
必须使用特殊的HTML标记标记实现Applet或JApplet的嵌入运行。
标记可以分为4个部分:Applet属性、参数、在非Java浏览器中的内容及 。下面就Applet属性、参数、在非Java浏览器中的内容以及其他的问题进行说明。
  (1)属性
在“”尖括号中的项称为属性。各个属性的含义如下:
①CODEBASE=codebaseURL。这个可选的属性指定Applet的URL地址,该URL是包含了Applet代码的目录。如果这个属性没有给出,就采用标记所在的HTML文件URL地址。
②CODE=appletFile。这个属性指定包含Applet或JApplet字节码的文件名。这个文件名可以包含路径,它是相对于由CoDEBASE指定的Applet代码目录的相对路径,而不是绝对路径。
③ALT=alternateText。这个可选属性指定了一些文字,当浏览器能够理解标记但不能运行Java Applet时,将显示这些文字。
④NAME=appletInstanceName。这个可选属性为即将创建的Applet定义了一个名字以便同一个页面中的Applet能够彼此发现并运行通信。另外,Web页面内的JavaScrip脚本要以利用这个名字调用Applet中的方法。
⑤WIDHT=pixels HEIGHT=pixels。这两个在标记中必须指定的属性,定义了Applet显示区以像素为单位的高度和宽度。但由Applet运行过程中所产生的任何窗口或对话框不受此约束。
⑥ALIGN=alignment。这个可选属性指定了Applet在浏览吕在的对齐方式。可选的属性值与IMG标记相同,包括:left、right、top、texttop、middle、absmiddle、baseline、bottom、absbottom。
⑦VSPACE=pixels HSPACE=pixes。这两个可选的属性分别指定Applet显示区上下(VSPACE)和左右(HSPACE)两边空出的像素数据,即指定了Applet周围预留空白的大小,它们与IMG标记中的VSPAVE与HSPACE的处理相同。
⑧ARCHIVEarchiveFiles。如果Applet有两个以上的文件,应该考虑将这些文件打包成一个归档文件(.jar或.aip文件)。当指定归档文件后,浏览器将在Applet类文件所在的目录中寻找这些归归档文件,并且在归档文件中寻找Applet的类文件。使用归档文件的好处是减少HTTP连接的次数,从而大大减少了Applet整体的下载时间。另外,由于归档文件是一种压缩文件,所以使用归档文件也将减少文件的传输时间。
使用JDK的jar工具创建JAR文件。在标记中可以使用ARCHIVE属性指定归档文件。可以通过逗号分隔定义多个归档文件。
需要注意的是,并不是所有的浏览器都识别相同的归档文件格式和指定归档文件的HTML代码。所以ARCHIVE属性并不是标记和标记之间除了
标志之外的任何HTML正文。只有在不支持标记的浏览器才解释替换性的HTML代码,Java兼容浏览器将忽略这些信息。对于理解标记但不能运行Applet的浏览器,将显示

How well did you know this?
1
Not at all
2
3
4
5
Perfectly