JAVA9Applet程序设计.ppt

上传人:本田雅阁 文档编号:2201772 上传时间:2019-03-03 格式:PPT 页数:55 大小:1.23MB
返回 下载 相关 举报
JAVA9Applet程序设计.ppt_第1页
第1页 / 共55页
JAVA9Applet程序设计.ppt_第2页
第2页 / 共55页
JAVA9Applet程序设计.ppt_第3页
第3页 / 共55页
亲,该文档总共55页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《JAVA9Applet程序设计.ppt》由会员分享,可在线阅读,更多相关《JAVA9Applet程序设计.ppt(55页珍藏版)》请在三一文库上搜索。

1、第9章 Applet程序设计,运行Applet HTML中的Applet标记 Applet支持的多媒体技术,Applet,什么是Applet Applet的生命周期,Applet,Applet(Java小应用程序)是能够嵌入到一个HTML页面中,并且可通过Web浏览器下载和执行的一种Java类。 Applet不需要main()方法,由Web浏览器中内嵌的Java虚拟机调用执行。 application 是从其中的main() 方法开始运行的; 而applet 是在浏览器中运行的,必须创建一个html 文件,通过编写html 语言代码告诉浏览器载入何种applet 以及如何运行。,Applet,

2、Applet应用程序的运行原理,Applet,Applet的容器特性,appletViewer,为了简化并提高Applet的开发速度,JDK提供了一个浏览Applet的简易工具:appletviewer appletviewer位于JDK目录下的bin目录中,在Applet中显示当前日期和时间。,import java.util.Date; import java.awt.*; import java.applet.Applet; public class DateApplet extends Applet public void paint(Graphics g) /在Applet上绘图 g

3、.setColor(Color.red); g.drawString(new Date().toString(),20,20); ,超文本文档DataApplet.html,将编译后的字节码文件DataApplet.class嵌入到超文本文档DataApplet.html中,HTML文档如下:, 当前日期和时间 ,超文本文档DataApplet.html,java applet运行被阻止解决方法,【问题描述】 1.8以上版本的java运行时会对applet小程序运行进行安全校验,并自动阻止非可信的applet运行 【解决办法】 1、web方式调用可以按如下方式解决:http:/ 2、本地程序被

4、阻止,则在控制面板-程序- java安全页签中添加file站点配置,“file:/”即可运行本地所有java applet运行,Applet的 安全性,“沙箱”机制:Java虚拟机为Applet提供能够良好运行的沙箱,一旦它们试图离开沙箱则会被禁止。 浏览器禁止Applet执行下列操作: 禁止读写本地计算机的文件系统。 禁止运行任何一个本地可执行文件。 禁止访问用户名、电子邮件地址等与本地计算机有关的信息。 禁止与除服务器外的任何一台主机通信。,8.2.2 Applet的生命周期,在浏览器中运行的Applet是作为浏览器中的一个线程执行的。Applet的生命周期与浏览器息息相关,它何时运行、何

5、时结束都由浏览器控制。 一个Applet对象经历由初始态、运行态、停止态到消亡态的一个生命周期,各状态之间变化由用户对浏览器的操作而触发。,Applet的状态及状态变化,Applet的生命周期,Java.applet.Applet,public void init(),public void destroy(),public void start(),public void stop(),public void paint(Graphics g),2. Applet状态改变时执行的方法,public void init()初始化: 在整个Applet生命周期中,初始化只进行一次. 当第一次浏览

6、含有Applet的WEB页时,浏览器将: a.下载该Applet b.创建对象产生一个该Applet主类的实例 c.调用init()对Applet自身进行初始化 在init()方法中可设置程序初始状态,载入图形或字体,获取 HTML中 设定的参数等。,2. Applet状态改变时执行的方法,public void start()启动Applet: 在整个Applet生命周期中,启动可发生多次 在下列情况下,浏览器会调用start()方法: a.Applet第一次载入时. b.离开该Web页后,再次进入时(back,forward). c.Reload该页面时. d.在浏览含有Applet的WE

7、B页时用浏览器右上角缩放按钮缩放浏览窗口大小时. 在start()方法中可启动一线程来控制Applet,给引入类对象发送消息,或以某种方式通知Java小应用程序开始运行.,2. Applet状态改变时执行的方法,public void stop()停止执行Applet: 在整个Applet生命周期中,停止执行可发生多次. 在下列四种情况下,浏览器会调用stop()方法: a.离开Applet所在 Web页时(用back,forward) b.Reload该页面时 c.在浏览含有Applet的WEB页时用浏览器右上角缩放按钮缩放浏览窗口大小时 d.close该Web页(彻底结束对该页面的访问),

8、exit结束浏览器运行时(从含有该小应用程序的WEB页退出时) stop()挂起小应用程序,可释放系统处理资源。不然当浏览者离开一个页面时,小应用程序还将继续运行。但并没有销毁Applet对象。,2. Applet状态改变时执行的方法,public void destroy()销毁: 销毁Applet对象时,执行destroy()方法,释放占用的系统资源 在整个Applet生命周期中,退出只发生一次 在彻底结束对该Web页的访问和结束浏览器运行时(close exit)调用一次 *destroy()是java.applet.Applet类中定义的方法,只能用于小应用程序,2. Applet状态

9、改变时执行的方法,public void paint(Graphics g)绘制: 可多次发生,浏览器会调用paint()方法: a.Web页中含有Applet的部分被卷入窗口时. b.Applet显示区域在视线内时调整浏览窗口大小、缩放浏览窗口、移动窗口或Reload等需要重绘窗口时都会调用paint()方法. 与前几个方法不同的是,paint()中带有一个参数Graphics g,它表明paint()需要引用一个Graphics类的对象实体. 在Applet中浏览器会自动创建Graphics对象并将其传送给paint()方法;但编程时应在小应用程序中引入Graphics类所在的包 impo

10、rt java.awt.Graphics;,绘图类,public abstract class Graphics extends Object public abstract Color getColor(); /获取当前颜色 public abstract void setColor(Color c); /设置颜色 public abstract void drawLine(int x1, int y1, int x2, int y2); /在两点(x1,y1)、(x2,y2)间画一条直线 public void drawRect(int x, int y, int width, int h

11、eight) /画矩形 public abstract void fillRect(int x, int y, int width, int height); /填充矩形 public abstract void clearRect(int x, int y, int width, int height); /清除矩形 /(x,y)指定矩形左上角坐标,width、height指定矩形的宽度和高度 public abstract void drawOval(int x, int y, int width, int height); /画椭圆 public abstract void fillOv

12、al(int x, int y, int width, int height); /填充椭圆 /(x,y)、width、height指定椭圆外切矩形的左上角坐标、长度和宽度。当width=height时,圆 public abstract void drawString(String str, int x, int y); /在(x,y)指定坐标位置显示字符串 public abstract Font getFont(); /获得字体 public abstract void setFont(Font font); /设置字体 ,在组件上绘图,组件绘图方法 public void paint(

13、Graphics g) /在组件上绘制图形 public void repaint() /调用paint()方法刷新图形 重新绘制图形 绘图坐标系,基本的Applet程序,import java.awt.Graphics; import java.applet.*; public class App11_1 extends Applet public void paint(Graphics g) g.drawString(“Hello Applet!“,50,60); ,Applet 图形绘制,import java.awt.Graphics; import java.applet.*; pu

14、blic class App_2 extends Applet public void paint(Graphics g) g.drawLine(40,30,200,30); g.drawRect(40,50,160,150); g.drawOval(45,55,150,140); g.drawLine(40,220,200,220); g.drawString(“Drawing!“,100,130); ,运行结果如图所示 :,绘制图形的Applet程序 import java.awt.*; import java.applet.Applet; public class App_3 exten

15、ds Applet public void paint(Graphics g) g.setColor(Color.blue); g.fillRect(40,50,160,150); g.setColor(Color.red); g.fillOval(45,55,150,140); g.setColor(Color.orange); g.fillRect(100,90,40,70); ,运行结果如图所示:,HTML中的标记, /左右宽度 /参数名称和值 /参数名称和值 /参数名称和值 ,基本标记 CODE=”applet程序名.class” ,CODE包含applet程序的主类字节码文件,主类文

16、件名与程序名是一致,“applet程序名.class”真正的含义是“applet的主类文件名.class”。 WIDTH=” pixels”, applet运行环境的窗口宽度,以像素为单位。 HEIGHT=” pixels” ,applet运行环境的窗口高度,以像素为单位。,扩充标记 CODEBASE=”URL”,applet的URL是主类文件所在的位置,用户计算机上是指的路径,网络上是指的网址。主类文件与HTML所在的目录相同时,省略;不同时,必须使用CODEBASE进行描述。 ALT=”alternateText”,当浏览器不支持applet的显示时,则在浏览器上显示alternateTe

17、xt的辅助文本(字符串)。 NAME=”instance name”,为applet设置一个符号名称。同一网页上,两个以上的applet要相互参考时,可使用该符号名称定位。,定位标记 ALIGN=”alignment”,applet在网页上的对齐方式。取值有:left、right、top、bottom、absbottom、middle、absmiddle、texttop、baseline等。 VSPACE=”pixels”,设置applet所保留的左右宽度,只在ALIGN设置为left、right时有效。 HSPACE=”pixels”,设置applet所保留的上下宽度,只在ALIGN设置为t

18、op、bottom时有效。,Applet参数 NAME描述了参数的名字 VALUE决定参数的值,值用字符串定义。 (一个标记描述一个参数,多个参数由多个标记描述。) 参数获取 HTML标记定义参数 并由applet的代码接收并分析对应的参数。 Applet的init()方法中使用getparameter()方法获取参数。getparameter()的入口是参数的名字,返回是参数的值。,【例8.3】 Applet从HTML中获取参数。,Java程序设计实用教程(第3版), Applet HTML 页 ,HTML程序,import java.awt.*; public class B extend

19、s java.applet.Applet String name; int age=0; public void init() name=getParameter(“name“); String a=getParameter(“age“); age=Integer.parseInt(a); public void paint(Graphics g) g.drawString(“Name:“+name,20,20); g.drawString(“Age:“+age,20,50); ,Applet程序,之后,只要修改HTML文件的参数值,就可以使Applet显示不同字体的不同文本,不需要重新编译A

20、pplet程序。,Applet支持的多媒体技术,获得资源文件的地址 显示图像 播放音频,获得资源文件的地址,Applet支持多媒体时,包含图像、音频等文件,当文件较多时,通常将不同类型的文件分类存放在不同的目录中。 问题: HTML文件如何找到嵌入其中的Applet文件 中codebase属性指定 Applet文件如何找到它需要用到的图像、音频等文件,获得资源文件的地址,Applet文件如何找到它需要用到的图像、音频等文件 public URL getCodeBase() /返回当前Applet所在的URL public URL getDocumentBase() /返回当前Applet所在的

21、HTML文件的URL,图像文本放在Applet目录之下的images目录中,则 getCodeBase()+”/ images”,Applet 图像处理,Java中可以直接载入并输出的图像文件格式 Gif Jpeg png Applet的图像是由Image类所创建的对象: Image类是置于java.awt类库中 Applet窗口中加载与显示图像的3个操作: 1. 声明Image类型的变量。 2. 使用getImage()加载图像。 3. 使用drawImage()绘制图像。,在Applet中加载图像,当载入本地计算机上的图像文件时可采用以下方式: Image getImage(URL url

22、,String name);,如果图像文件和Applet位于同一个目录下面,就可以通过getCodeBase()方法获得地址。,若图像文件和包含Applet的HTML文件位于同一个目录下面,可以使用getDocumentBase()获得基地址。,显示图像,Graphics支持显示图像 在paint()方法中,调用Graphics类的drawImage()方法,显示图像 public abstract boolean drawImage(Image img, int x, int y, ImageObserver observer);,Applet窗口中加载图像 import java.awt.

23、*; import java.awt.event.*; import java.applet.Applet; public class App_5 extends Applet Image img; public void init() img=getImage(getCodeBase(),“App_5.jpg“); public void paint(Graphics g) g.drawImage(img, 0, 0,this); ,this指当前显示图像的容器对象,用鼠标移动图像的Applet程序 import java.awt.*; import java.awt.event.*; im

24、port java.applet.Applet; public class B extends Applet implements MouseMotionListener,MouseListener Image img; int x=70,y=60; public void init() img=getImage(getCodeBase(),“YYP.jpg“); addMouseListener(this); addMouseMotionListener(this); public void mouseDragged(MouseEvent e) x=e.getX(); y=e.getY();

25、 Graphics g=getGraphics(); update(g); public void paint(Graphics g) g.drawImage(img,x,y,120,60,this); public void mouseMoved(MouseEvent e); public void mousePressed(MouseEvent e); public void mouseReleased(MouseEvent e); public void mouseEntered(MouseEvent e); public void mouseExited(MouseEvent e);

26、public void mouseClicked(MouseEvent e); ,Applet 声音技术,Java支持声音文件格式: Java 2支持“.au”、“.aif”、“.midi”、“.wav” “.rfm”等格式的音频文件。 在Applet中使用java.applet类库里的AudioClip接口就可以播放声音。 AudioClip接口定义了3个方法: loop()循环播放音乐文件 play()播放音乐文件 stop()停止播放音乐文件,播放音频,与显示图像相同,首先读入指定音频文件并生成一个AudioClip对象; 在Applet中装入音频对象 public AudioClip

27、getAudioClip(URL url1, String filename) public AudioClip getAudioClip(URL url2) 然后调用AudioClip的play()和stop()等方法控制音频的播放和停止; Applet类中直接播放音频的方法 public void play(URL url1, String filename) public void play(URL url2),实例 在Applet中加载数字音频,播放方式: 1. 通过Applet类的play方法。 当播放本地计算机上的声音文件时调用格式如下: void play(URL url,Str

28、ing name); 1)当声音文件和applet文件存放在同一目录下时,可以通过方法 getCodeBase()返回当前Applet所在的URL。 2)当声音文件和包含Applet的HTML文件位于同一个目录下面时,可以通过方法getDocumentBase()获得基地址。,【例】 import java.awt.Graphics; import java.applet.Applet; public class Exa8_8 extends Applet public void paint(Graphics g) g.drawString(“音乐欣赏“,20,30); play(getDoc

29、umentBase(),“music.au“); ,播放当前路径下的“music.au“声音文件,对应的HTML文件Audio.HTML内容如下: ,程序运行结果如图所示:,问题: 1.play()方法只能将声音播放一次。 2.调用play()方法装载并播放声音文件时,若找不到指定的声音文件,则无法听到声音,但不会产生异常。,在Applet中加载数字音频,播放方式: 2.通过AudioClip类中的方法播放。 AudioClip类包含在java.applet类库中,其播放功能更为强大。为了得到AudioClip对象,可以调用Applet类中的getAudioClip()方法。它能装载指定URL

30、的声音文件,并返回一个AudioClip对象。,在Applet中加载数字音频,当播放本地计算机上的声音文件时调用格式如下: AudioClip getAudioClip(URL url,String name);,创建了AudioClip对象后,声音文件就可以装载了,可调用它的方法处理声音文件。 AudioClip只有3种方法: void play() 播放一遍 void loop() 连续播放 void stop() 停止播放,【例】 import java.awt.Graphics; import java.applet.*; import java.applet.AudioClip; p

31、ublic class Exa8 extends Applet AudioClip Obj_s;,public void init() Obj_s=getAudioClip(getDocumentBase(),“music.wav“); public void paint(Graphics g) g.drawString(“循环播放声音文件!“,10,100); public void start() Obj_s.loop();/循环播放音乐 public void stop() Obj_s.stop();/stop()方法停止播放声音文件 ,程序运行结果如图所示:,/在Applet播放音乐

32、import java.awt.*; import java.awt.event.*; import java.applet.Applet; import java.applet.AudioClip; public class B extends Applet implements ItemListener Image img; AudioClip midi=new AudioClip3; AudioClip current; Choice chc=new Choice(); public void init() img=getImage(getCodeBase(),“yyp.jpg“); m

33、idi0=getAudioClip(getCodeBase(),“music1.wav“); midi1=getAudioClip(getCodeBase(),“music2.wav“); midi2=getAudioClip(getCodeBase(),“music3.wav“); chc.add(“music1“); chc.add(“music2“); chc.add(“music3“); add(chc); chc.addItemListener(this); current=midi0; current.play(); ,int index; public void itemStateChanged(ItemEvent e) repaint(); current.stop(); index=chc.getSelectedIndex(); current=midiindex; current.play(); public void paint(Graphics g) g.drawImage(img,0,0,200,200,this); ,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1