270 likes | 546 Views
西南科技大学网络教育系列课程 高级语程序设计 (Java). 第十二章 Java Applet. Applet 的工作原理. Applet 概述 Applet 是用 Java 编写的小应用程序,它能够嵌入在 HTML 网页中,并由支持 Java 的 Web 浏览器来解释执行。 A pplet 最早是用于应用程序的发布,这一功能已被 Java Web Start 代替。 现广泛用于主从架构或网络程序设计。. Applet 与 HTML 不在一个目录,定义调用的 Applet 的路径. Applet 与其他元素的水平和竖直边距. Applet 程序显示区的宽度和高度.
E N D
西南科技大学网络教育系列课程 高级语程序设计(Java) 第十二章 Java Applet
Applet的工作原理 • Applet概述 • Applet是用Java编写的小应用程序,它能够嵌入在HTML网页中,并由支持Java的Web浏览器来解释执行。 • Applet最早是用于应用程序的发布,这一功能已被Java Web Start代替。 • 现广泛用于主从架构或网络程序设计。
Applet与HTML不在一个目录,定义调用的Applet的路径Applet与HTML不在一个目录,定义调用的Applet的路径 Applet与其他元素的水平和竖直边距 Applet程序显示区的宽度和高度 Applet的对齐方式 Applet的名字。 • 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时,显示的代替文字。
Applet的安全机制 • 从Web上下载的java applet是在称为沙箱 (sandbox)的安全环境中运行。 • applet绝不能运行任何本地可执行程序。 • applet除了可以与从中下载它们的服务器进行通信外,不能与任何主机通信。 • applet不能读写本地计算机的文件系统。 • applet不能获取除版本等以外的任何关于本地计算机的信息。 • applet弹初式窗口都回带有一个警告信息。 • applet可以使用签名方式来获取更大的权限。
下载 启动 start()启动 init()初始化 实例化 转入 后台 重新 激活 退出 stop()暂停 destroy()终止 • Applet的生命周期
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{ publicvoid init(){ //初始化变量、装载图片、读取参数值等 } public void start(){ //启动程序执行或恢复程序执行 } public void stop(){ //挂起正在执行的程序,暂停程序的执行 } public void destroy(){ //终止程序的执行释放资源 } public void paint(Graphics g){ //完成绘制图形等操作} }
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( )方法。 用于在屏幕上给定的位置绘制字符串
网页向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是首字符在数组中的位置 。
绘制直线 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给出椭圆的宽和高。
绘制圆弧 • 圆弧就是某个椭圆的一部分。 • 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支持两种主要的图像格式: • 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接口,它可以作为加载图像时的图像观察器。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):获取被加载的图像的宽。 例: 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播放动画 • 使用多线程技术实现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对象。