西南科技大学网络教育系列课程 高级语程序设计(Java) 第十二章 Java Applet
Applet的工作原理 现广泛用于主从架构或网络程序设计。 Applet概述 Applet是用Java编写的小应用程序,它能够嵌入在HTML网页中,并由支持Java的Web浏览器来解释执行。 Applet最早是用于应用程序的发布,这一功能已被Java Web Start代替。 现广泛用于主从架构或网络程序设计。
Applet和HTML 首先确定Applet的存在(*.class文件)。 使用Applet,格式: <Applet code=“*.class” codebase=“jbase” width=200 height=200 vspace=2 hspace=3 align=“top” name=“java01” alt=“不支持 Applet”> </Applet> 定义调用的Applet程序名,注意全名和大小写。 Applet与HTML不在一个目录,定义调用的Applet的路径 Applet程序显示区的宽度和高度 Applet与其他元素的水平和竖直边距 Applet的对齐方式 Applet的名字。 浏览器不支持Applet时,显示的代替文字。
从Web上下载的java applet是在称为沙箱 (sandbox)的安全环境中运行。
Applet的生命周期 下载 实例化 init()初始化 start()启动 stop()暂停 destroy()终止 启动 转入 后台 重新 激活 退出
根据执行过程中发生的事件来定义生命周期,对于每个事件将自动调用一种方法。 Applet主要方法 根据执行过程中发生的事件来定义生命周期,对于每个事件将自动调用一种方法。 init():初始化时调用,主要是创建所需要的对象、设置初始状态、设置参数等。 start():调用init方法之后自动调用这个方法。 stop():退出网页时停止执行Applet程序。 destroy():离线时释放本对象及其相关的资源。 paint(Graphics g):绘制Applet图形。
Applet图形的显示和刷新 Applet图形的显示和刷新由三个方法完成:paint(),repaint(),update(),都是从java.awt.component类继承来的 Applet图形的显示和刷新由一个独立线程控制,称为AWT线程 如果Applet部分显示内容被其他窗口覆盖,那么其他窗口移开或关闭时,曾被覆盖部分必须重画,此时AWT线程会自动调用paint()方法 程序更新显示内容,可以使用repaint()方法通知系统要更新显示的内容,此时AWT线程会自动调用update()方法清空当前画面,然后调用paint()方法绘制新的内容
Applet的创建 编写Applet时,必须注意下列问题 在Applet原程序文件中的开始,必须包含一些包,即有如下语句: import java.applet.* 或 import java.applet.Applet 必须有一个类声明为public,而且文件名必须与类名保持一致,该类必须继承自java.applet.Applet,完整的声明如: public class MyFirstApplet extends Applet
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){ //完成绘制图形等操作}
Applet示例 import java.awt.Graphics; import java.applet.Applet; 重写了Applet类的init( ) 方法。 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类的paint( )方法。 用于在屏幕上给定的位置绘制字符串
Applet 和Application Applet 应用程序 Applet基本上是为部署在Web上而设计的 应用程序是为作为独立程序工作而设计的 Applet是通过扩展 java.applet.Applet 类创建的 应用程序则不受这种限制 Applet 通过appletviewer或在支持Java的浏览器上运行 应用程序使用Java解释器运行 Applet 的执行从 init() 方法开始 应用程序的执行从 main() 方法开始 Applet必须至少包含一个 public 类,否则编译器就会报告一个错误。在该类中没有 main( )方法。 对于应用程序,public 类中必须包括main( ),否则无法运行。
网页向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”);
Java Applet中播放声音 用Java可以编写播.au .aiff .wav .midi .rfm格式的音频。 在Java Applet中播放声音,可以使用Applet的一个方法: 静态的方法: newAudioClip(URL url,String name) 实例方法: getAudioClip(Url url,String name) 处理声音文件的方法 play() 播放声音文件 loop() 循环播放 stop() 停止播放。
Java Applet中使用AWT组件 Applet类是容器类Container的间接子类。 可以在这个容器中添加组件,处理组件事件。 目前的浏览器仅仅支持JDK1.1版本中的类库,Java Applet中只能使用JDK1.1版本公布的java.awt包中的组件。 如: public void init() { add(new Button(“Test”); } Applet的默认布局为FlowLayout
Java Applet中使用Swing组件 SDK1.4以后的版本,浏览器中的JVM就会被更新为当前SDK所带的JVM。 浏览器就可以使用javax.awing包中的组件。 使用javax.swing包中的组件时,Java Applet的主类应当是JApplet的子类。 JApplet是Applet的一个直接子类,在javax.swing包中。
JApplet新特性: 不可以把组件直接添加到JApplet容器中。 JApplet容器也含有一个称为内容面板的容器,应当把组件添加到内容面板中。 不能为JApplet容器设置布局,而应当为JApplet容器的内容面板设置布局。 内容面板的默认布局是BorderLayout布局。 JApplet容器通过调用方法: getContentPane(),得到内容面板。
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是首字符在数组中的位置 。
drawRect (int x,int y,int w,int h):绘制矩形。 绘制直线 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指定。
绘制圆角矩形 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给出椭圆的宽和高。
x、y、width、heigth指定圆弧的位置和大小。 参数starAngle和 arcAngle的单位都是“度”。 绘制圆弧 圆弧就是某个椭圆的一部分。 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度的弧。 正值 负值
Java Applet中绘制图像 图像是矩形内的一组像素。 Java支持两种主要的图像格式: Applet类提供了一个重要的方法: GIF JPEG Applet类提供了一个重要的方法: public Image getImage(URL url,String name):返回可以被显示在屏幕上的Image对象的引用,即将URL地址中,文件名为name的文件加载的内存,并返回该内存的首地址。
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是加载图像时的图像观察器。
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):在矩形内绘制加载的图像。
img.getHeight(this):获取被加载的图像的高。 img.getWidth(this):获取被加载的图像的宽。 获取图像的属性: 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);
Java Applet 播放幻灯片和动画 Java Applet播放幻灯片 在HTML中播放图像切换幻灯片。 Java Applet播放动画 动画是一种错觉,运动的错觉是通过快速显示一组图片造成的,而这些图片在内容上只有微小的变化。
Java Applet的网络功能 使用URL 常用方法 public AppletContext getAppletContext():返回一个AppletContext对象,称作Java Applet所在的运行环境。 void showDocument(URL url)返回一个AppletContext对象。
使用套接字 Java Applet程序的字节码驻留在服务器端,需要下载到客户端的浏览器来运行。 JavaApplet程序是客户端程序。 Java Applet程序只能和它所驻留的服务器建立套接字连接。 public URL getDocumentBase():返回一个嵌入Java Applet的网页的URL对象。