资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,9,章,Applet程序设计,9.1,Applet概述,9.2,Applet基础,9.3,图 像 处 理,9.4,音 频 播 放,9.5 HTML,的,Applet,标签和属性,9.6,JAR文件,9.7,为Applet传递参数,9.8 JavaScript,操作,Applet,9.9,控制其他,Applet,程序,9.10 Applet,安全基础,9.1 Applet,概述,Applet,是可以再,Web,浏览器上运行的小型,Java,程序,它可以运行在支持,Java,的浏览器中,例如,IE,和,Netscape,等,使用,Applet,可以大幅度提高网页的交互能力。,当用户访问网页中包含,Applet,程序时,,Applet,将被下载到本机执行,一个包含,Applet,程序的,HTML,网页可以实现添加声音、动画、游戏等特性到网页中,从而吸引网站浏览者,增加网站流量。,9.2,Applet基础,Applet,类继承了,Panel,类,是一个容器,在,Applet,程序开发中多使用,JApplet,类,它是,Java Swing,中的成员,继承了,Applet,类,,JApplet,类的继承关系如下图所示。,JApplet,和,Java Swing,中的,JFrame,窗体类似,可以容纳各种组件,例如按钮、标签、列表框、文本框等。,9.2.1,简单,Applet,实例,(,1,)创建,HelloApplet,类,该类必须继承,JApplet,类,并且覆盖父类的,init,()方法。,代码:,import,java.awt.Container,;,import,javax.swing.JApplet,;,import,javax.swing.JLabel,;,public class,HelloApplet,extends,JApplet,public void,init(),Container c=,getContentPane,();,JLabel,l=new,JLabel(HelloWorld,);,add(l,);,(,2,)编写“,HelloApplet.html,”,文件,在该文件中使用,标签装载,Applet,程序。,代码:,使用,appletviewer.exe,执行,Applet,例如:,appletviewer,HelloApplet.html,注意:,(,1,)字节码文件(,class,文件),网页文件要放在同一个文件夹中。,(,2,)运行的当前目录为网页所在的目录。,9.2.2 Applet,生命周期,Applet,程序没有,main(),方法,它是在,init(),方法中创建并使用组件的。,Applet,声明周期包括,4,个阶段。,(,1,),init(),方法,Applet,程序的初始化阶段会调用该方法,实现程序初始化。,(,2,),start(),方法,Applet,程序的开始阶段,当完成,Applet,的初始化以后,将会执行该方法。,Applet,生命周期,(,3,),stop(),方法,Applet,程序的暂停阶段,当用户离开包含,Applet,的页面时,将调用该方法。,(,4,),destroy(),方法,Applet,程序的销毁阶段,该方法仅在用户正常关闭浏览器时被调用,它用于,Applet,被结束之前,释放程序所占用的资源和执行程序结束时的任务。,这,4,个生命周期的方法不应该直接调用,它们由,Applet,程序自动执行,程序设计人员需要做的就是根据需要覆盖其中的某个方法,.,【9-2】,输出,Applet,各个生命周期的状态,import,javax.swing,.*;,public class,PrintApplet,extends,JApplet,public void,init(),System.out.println,(,初始化阶段,,init);,public void,start(),System.out.println,(,开始阶段,start);,public void,stop(),System.out.println,(,暂停阶段,stop);,public void,destroy(),System.out.println,(,销毁阶段,destroy);,9.2.3 Graphics,类,Applet,程序中除了使用,Swing,组件显示界面之外,还可以使用,Graphics,类提供的各种方法,在,Applet,程序中绘制多种,图形,、,图片,和,文字,等。,1.,绘制文本,Graphics,类中的方法,drawString,(String,int,int,),来输出字符串。,例如:,import,javax.swing,.*;,import,java.awt,.*;,public class,AppletString,extends,JApplet,public void,paint(Graphics,g),g.drawString(Helloworld,10,20);,2,、,Graphics,类 绘制图片,绘制图片,就是在,Applet,容器中显示一个事先准备好的图片资源。,(1)drawImage(),方法,绘制图片由,drawImage,(),方法实现,它可以指定绘制图片的位置和大小。格式如下:,drawImage,(Image,img,int,x,int,y,ImageObserver,observer,),img,:该参数是要绘制的图片对象,如果该参数为,null,,那么该方法不做任何操作。,x,:绘制图片的,x,坐标。,y,:绘制图片的,y,坐标。,observer,:绘制图片需要通知的对象,一般设置为,Applet,本身即可。,drawImage,(),方法,drawImage,(Image,img,int,x,int,y,i,nt,width,int,height,ImageObserver,observer,),width,:,该参数指定图片显示的宽度。,height,:,该参数指定图片显示的高度,这两个参数可以实现图片的缩放。,(,2,),getImage,()方法,在,Applet,程序中获取图片使用,getImage,(),方法,.,格式如下:,getImage,(URL,url,),url,:,图片文件的,URL,路径,该路径必须是指定图片文件位置的绝对路径。,getImage,(URL,url,String name),url,:,给出图片文件基本位置的绝对,URL,路径,例如,“,F:,javaex,/”,。,name,:,图片位置的相对路径,该路径相对于,url,参数。,(,3,),getCodeBase,(),方法,当图片与,class,文件同在一个目下下时,可采用此方法获取图片路径。,例如:,Image i=getImage(getCodeBase(),”01.jpg”);,【9-3】,在,Applet,中显示图片,(,1,),Java,文件,import,javax.swing,.*;,import,java.awt,.*;,public class,ImgPlayer,extends,JApplet,Image,img,;,public void init(),img,=,getImage,(,getCodeBase,(),04.jpg);,public void,paint(Graphics,g),g.,drawImage,(img,10,10,this);,/,g.drawImage(img,10,10,300,200,this);/,图片缩放,(,2,),html,文件,9.4,音 频 播 放,Java,语言除了能够处理图片资源之外,还可以获取并播放音频、视频等多媒体资源。,Applet,程序可以使用,AudioClip,接口,提供的相关,API,来实现音频播放、停止和循环播放,支持的主要音频格式有,AIFF,、,AU,、,MIDI,、,WAV,、,RMF,等。,AudioClip,接口中定义了,play(),、,stop(),、,loop(),3,个方法,这,3,个方法分别用于音频播放、停止和循环操作。,音 频 播 放的常用方法,(,1,),play(),方法,该方法将从头开始重新播放指定的音频剪辑。语法格式为:,play(URL,url,),play(URL,url,String name),参数:,url,:,该参数指定了音频资源的,URL,绝对路径。,name,:,音频文件名称,它相对于,url,参数的音频剪辑位置,(,2,),stop(),方法,该方法将停止当前正在播放的音频剪辑。,(,3,),loop(),方法,该方法将循环播放指定的音频剪辑。,getAudioClip,(),方法,(,4,),getAudioClip,(),方法,该方法可以获取,URL,参数指定的,AudioClip,对象,该对象是,AudioClip,接口的一个实现,当调用该对象的方法进行音频播放时,音频资源中的数据将被加载并播放。,语法格式为:,getAudioClip(URL,url,),getAudioClip(URL,url,String name),参数:,url,:,音频资源的,URL,参考路径。,name,:,音频文件名称,它相对于,url,参数的音频剪辑位置。,newAudioClip,(),方法,(,5,),newAudioClip,(),方法,该方法可以创建,AudioClip,对象,它是一个静态方法,在所有,Java,程序中都可以使用,Applet,类的静态方法,newAudioClip,(),创建,AudioClip,对象,实现音频播放。,一般格式为:,try,URL,url,=new URL(getCodeBase()+08.WAV);,AudioClip,audio=,newAudioClip(url,);,catch(,MalformedURLException,e),e.printStackTrace,();,【,例,9-4-1】,使用,getAudioClip,(),方法实现音频播放,(,1,),java,文件,import,java.applet.AudioClip,;,import,javax.swing.JApplet,;,public class,Audio1,extends,JApplet,AudioClip,audio;,public void init(),audio=getAudioClip(getCodeBase,(),“08.WAV);,public void start(),audio.play,();,public void stop(),audio.stop,();,Html,文件,import java.applet.AudioClip;,import javax.swing.JApplet;,import.*;,public class Audio2 extends JApplet,AudioClip audio;,public void init(),try,URL url=new URL(getCodeBase()+99121605.mid);,audio=newAudioClip(url);,catch(Exception e),public void start()audio.play();,public void stop()audio.stop();,【,例,9-4-2】,使用,newAudioClip,(),方法实现音频播放,9.5 HTML,的,Applet,标签和属性,(,1,),width,属性,该属性用于指定,Applet,程序在,HTML,网页中的宽度,例如,width=200,。这将限制,Applet,程序界面的大小。,(,2,),height,属性,该属性用于指定,Applet,程序在,HTML,网页中的高度,例如,height=100,。这将限制,Applet,程序界面的大小。,(,3,),code,属性,该属性用于指定,Applet,程序的类文件名称,默认情况下,该属性所指定的类文件的位置相对于当前,HTML,文件所在位置。例如,code=,Hello.class,,那么“,Hello.class,”,文件必须存放在与,HTML,文件相同的文件夹中。,HTML,的,Applet,标签和属性,(,4,),align,属性,该属性是关于,Applet,程序定位的属性,它可以指定,Applet,的对齐方式,例如,align=left,和,align=right,分别可以使,Applet,左对齐和右对齐,能够实现,Applet,被文字环绕的效果,如下图所示。,标签的,align,属性值如下表所示。,属 性 值,说 明,left,使,Applet,程序在网页中左对齐,后面的文本环绕在,Applet,程序右侧,right,使,Applet,程序在网页中右对齐,后面的文本环绕在,Applet,程序左侧,top,在网页中使,Applet,程序顶部与当前行顶部对齐,middle,在网页中使,Applet,程序中部与当前行的基线对齐,absmiddle,在网页中使,Applet,程序中部与当前行的中部对齐,请区别于,middle,bottom,在网页中使,Applet,程序底部与当前行文本的底部对齐,absbottom,在网页中使,Applet,程序底部与当前行底部对齐,请区别于,bottom,texttop,在网页中使,Applet,程序顶部与当前行文本顶部对齐,请区别于,top,baseline,在网页中使,Applet,程序底部与当前行的基线对齐,HTML,的,Applet,标签和属性,(,5,),vspace,属性与,hspace,属性,这两个属性分别用于设置,Applet,程序在上下垂直方向空白的像素数目,和,Applet,程序在左右水平方向空白的像素数目。例如使,Applet,程序左对齐,并且上下空白,50,像素,左右空白,100,像素,可以使用如下的,HTML,代码:,HTML,的,Applet,标签和属性,(,6,),codebase,属性,该属性用于指定,Applet,程序的路径,该路径相对与当前,HTML,网页文件,例如“,Hello.class,”,类文件位于,myApplets,文件夹中,可以使用如下代码加载,Applet,:,code,属性只用于指定,Applet,程序名称,例如,com.lzw.Hello.class,,而,codebase,属性则用于指定,Applet,程序的位置,当指定了,codebase,属性之后,,code,属性指定的程序名称,不再相对于当前,HTML,文件,而是相对于,codebase,属性指定的程序位置,但是,codebase,属性则相对与当前,HTML,文件的位置。,HTML,的,Applet,标签和属性,(,7,),archive,属性,该属性可以指定包含,Applet,程序的,JAR,文件,,JAR,文件是,Java,程序的打包文件,它采用,ZIP,格式将程序压缩,使,Java,程序的体积大幅度缩小,这样,在浏览包含,Applet,程序的网页时,,Applet,程序的下载时间相对缩短,从而提高程序运行速度。,(,8,),name,属性,该属性为,Applet,程序指定名称,使网页脚本可以通过改名成获取,Applet,程序实例,并使用该实例操作,Applet,程序。,9.6 JAR,文件,JAR,文件是,Java,的打包文件,它可以将多个编译后的类文件和图片、音频、视频、文本、属性等资源封装到一个,JAR,文件中。,(,1,)使用,JDK,生成,JAR,文件的一般格式为:,jar cvf jarName file1 file2,cvf,:,该参数用于生成,JAR,压缩文档并输出详细信息。,jarName,:,该参数用于指定,JAR,文件名称。,file1,:,添加到,JAR,文件中的第一个文件。,file2,:,添加到,JAR,文件中的第二个文件(可以使用通配符指定多个文件,也可以在,file2,参数后再指定其他文件)。,(,2,)使用,JDK,生成可执行的,JAR,文件,方法一:打包所有文件,(,1,)将要打包的所有文件放在同一个目录下。,(,2,)在此目录下创建,manifest.mf,文件,文件内容:,Main-Class:,主类名回车,DOS,命令行,当前目录为*,.Class,所在的目录:,(,3,)当前目录下输入下列命令:,jar,cvfm,jarName,mainfest.mf,file1 file2,方法二:打包一个,package,(),manifest.mf,文件中写明主类,格式:,Main-Class:,包名,.,主类名,enter,()把,manifest.mf,文件与,package,放在同一个目录下,(),DOS,命令行,当前目录为包所在的目录:,jar,cvfm,jarName,mainfest.mf,包名,(,3,)使用,Eclipse,开发工具生成,JAR,现在的应用程序、操作系统、开发工具逐渐图形化,而且有很多的命令由于参数过多难以记忆,使用开发工具完成,JAR,文件的创建已经是最常用的一种方式。,Eclipse,作为一个强大的,Java,开发工具,不但提供了,Java,源程序的代码辅助、智能纠错、动态调试等环境,而且还可以直接将程序代码导出成为一个,JAR,文档文件。,具体操作步骤如下。,9.6.3,使用,JAR,文件中的,Applet,程序,将程序制作成,JAR,文件之后,在,HTML,的,标签中访问,JAR,文件中的,Applet,程序可以使用如下,HTML,代码:,标签使用,archive,属性指定了“,AudioPlay.jar,”,文件,,Applet,程序在运行时期,会先下载该,JAR,文件,然后运行,JAR,文件中的,ImgPlayer.class,类文件。,9.7,为,Applet,传递参数,HTML,的,标签可以为,Applet,程序设置各种初始属性,例如宽度、高度、对齐方式等,但是有些情况下,,Applet,程序需要根据参数初始化自己,这可以通过,标签的子标签,来实现。,一般格式为:,name,:,该参数用于设置传递给,Applet,程序的参数名称。,value,:,该参数用于设置传递给,Applet,程序的参数值。,为,Applet,传递参数,在,Applet,程序中可以使用,getParameter,(),方法获取,标签提供的参数。,语法格式为:,getParameter(String,arg,),arg,:该参数是,标签设置的参数名称。,例如,获取,标签设置的商品单价参数“,price”,,可以使用如下代码:,public void init(),String,priceArg,=,getParameter(price,);,float price=,Float.parseFloat(priceArg,);,例,9-5,传递参数,(1),传递参数的,HTML,文件的编写:,(2),获得参数的,java,文件,import java.awt.*;,import javax.JApplet.*;,public class ParamApplet extends JApplet,int sum;,String s1,s2;,public void init(),s1=getParameter(“girl”);,s2=getParameter(“boy”);,/,需要将字符串转化为整形后才可以进行计算,sum=Integer.parseInt(s1)+Integer.parseInt(s2);,public void paint(Graphics g),g.drawString(“,女”,+s1+”,名,”,+”,男”,+s2+”,,共”,+sum+”,人。”,50,50);,9.8 JavaScript,操作,Applet,HTML,的,标签可以使用,name,属性为,Applet,程序命名,这样,JavaScript,脚本就可以获取,Applet,程序的实例,并调用,Applet,程序的方法执行相关操作。,【,例,9-6】,9.9,控制其他,Applet,程序,Applet,上下文是实现,AppletContext,接口的对象。通过该对象可以实现获取同一个网页中的所有,Applet,程序、在浏览器状态栏中显示信息、显示指定,URL,的网页等。获取,Applet,上下文需要使用,getAppletContext,(),方法。,一般格式为:,AppletContext,appletContext,=,getAppletContext,();,Applet,上下文提供了获取其他,Applet,程序实例的方法,这样就可以控制获取的,Applet,程序实例,从而实现对其他,Applet,程序的控制。,Applet,上下文中获取其他,Applet,程序的方法有两种。,控制其他,Applet,程序,(,1,),getApplets,(),方法,getApplets,(),方法用于获取包含在同一个上下文中的所有,Applet,程序,该方法返回一个枚举类型的实例,这个枚举类型中包含了同一个上下文中的其他,Applet,程序的引用。,语法格式为:,Enumeration applets=,appletContext.getApplets,();,appletContext,:,这是一个,Applet,上下文对象。,控制其他,Applet,程序,(,2,),get,Applets(String,name),方法,getApplets,(),方法用于获取同一个上下文中指定名称的,Applet,程序,该方法返回一个,Applet,程序的引用。,语法格式为:,appletContext.getApplet(String,name);,appletContext,:,这是一个,Applet,上下文对象。,name,:,该参数是另外一个,Applet,程序的名称。,【,例,9-7】,9.10 Applet,安全基础,Applet,程序存放在远程服务器端,当用于浏览服务器的网页时,将自动下载该,Applet,程序,然后在本地执行,如果有人使用,Applet,程序编写恶意程序,对用户主机进行攻击,或盗取用户资料,例如银行账号、密码等信息,将对用户造成极大地损害。所以,安全成为,Applet,至关重要的问题。,9.10.1 Applet,的行为,Applet,程序可以运行在任何一个平台(即操作系统)中,在不同的平台上可以实现相同的功能,这些功能包括:,(,1,)显示图片;,(,2,)播放音频;,(,3,)获取用户的鼠标、键盘操作事件;,(,4,)把用户输入的信息提交给服务器。,这些功能对于网站信息提示、图片处理、在线交互、提交订单等业务来讲,已经足够完成网站中的各种任务。所以,对于其他操作必须加以限制,例如访问本地文件、获取用户和系统信息等操作。,9.10.2 Applet,的安全限制,Applet,拥有安全管理器,它为程序提供了足够的安全保障,当,Applet,程序违反安全规则时,,Applet,安全管理器将抛出,SecurityException,异常,,Applet,有以下安全限制。,(,1,)不允许执行任何本地程序。,(,2,)不允许对本地文件进行读写操作。,(,3,)在,Applet,弹出窗口中都会带有一个警告信息。,(,4,)只能获取少量的计算机信息,例如,Java,虚拟机的版本、操作系统版本与名称,还有文件分隔符、换行符等特殊字符。,(,5,)不能获取用户名、,E-mail,地址等信息。,(,6,),Applet,不能与其他服务器通信,只能与存放,Applet,程序的服务器进行通信。,
展开阅读全文