《Java课件第九章Applet应用程序.ppt》由会员分享,可在线阅读,更多相关《Java课件第九章Applet应用程序.ppt(44页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、9.1Applet9.1Applet的特点的特点的特点的特点第九章第九章 AppletApplet应用程序应用程序9.4Applet9.4Applet应用应用应用应用9.2Applet9.2Applet类类类类9.3HTML9.3HTML和和和和AppletApplet1http:/someLocation/file.html1.BrowserloadsURL1.BrowserloadsURL2.Browserloads2.BrowserloadsHTMLdocumentHTMLdocumentAppletclass3.Browserloads3.Browserloadsappletclass
2、esappletclasses4.Browser4.BrowserrunappletrunappletLoading.Loading.LocationLocationhttp:/someLocation/file.htmlhttp:/someLocation/file.html2AppletApplet的安全限制的安全限制w w因为因为因为因为appletapplet是从远端服务器上下载并且在本地执行,所以是从远端服务器上下载并且在本地执行,所以是从远端服务器上下载并且在本地执行,所以是从远端服务器上下载并且在本地执行,所以安全性就显得格外重要。安全性就显得格外重要。安全性就显得格外重要。安全
3、性就显得格外重要。w w通过限制通过限制通过限制通过限制appletapplet在沙箱在沙箱在沙箱在沙箱(applet(applet的运行环境的运行环境的运行环境的运行环境)中运行,保证了中运行,保证了中运行,保证了中运行,保证了对本地系统而言对本地系统而言对本地系统而言对本地系统而言appletapplet是安全的。是安全的。是安全的。是安全的。w wappletapplet在沙箱中运行时:在沙箱中运行时:在沙箱中运行时:在沙箱中运行时:不能运行任何本地可执行程序;不能运行任何本地可执行程序;不能运行任何本地可执行程序;不能运行任何本地可执行程序;除了存放下载的除了存放下载的除了存放下载的除
4、了存放下载的appletapplet的服务器外,的服务器外,的服务器外,的服务器外,appletapplet不能和其它主机不能和其它主机不能和其它主机不能和其它主机进行通信。进行通信。进行通信。进行通信。不能对本地文件系统进行读写。不能对本地文件系统进行读写。不能对本地文件系统进行读写。不能对本地文件系统进行读写。3appletBrowserBrowserlocallocal小应用程序的限制小应用程序的限制小应用程序的限制小应用程序的限制本地程序本地程序file本地方法本地方法SERVERSERVER与与与与appletapplet无关的无关的无关的无关的connectionconnectio
5、nSERVERSERVERappletapplet被下载的被下载的被下载的被下载的connectionconnection4一个简单例子:一个简单例子:一个简单例子:一个简单例子:importjava.applet.*;importjava.applet.*;importjava.awt.*;importjava.awt.*;publicclassHelloAppletextendsAppletpublicclassHelloAppletextendsApplet publicStrings;publicStrings;publicvoidinit()publicvoidinit()s=new
6、String(“HelloWorld!”);s=newString(“HelloWorld!”);publicvoidpaint(Graphicsg)publicvoidpaint(Graphicsg)g.drawString(s,25,25);g.drawString(s,25,25);HelloWorldHelloWorldappletcode=HelloApplet.classwidth=300height=3005Java.applet.AppletJava.applet.Appletpublicvoidinit()publicvoidinit()publicvoiddestroy()
7、publicvoiddestroy()publicvoidstart()publicvoidstart()publicvoidstop()publicvoidstop()publicvoidpaint(Graphicsg)publicvoidpaint(Graphicsg)AppletApplet的运行控制的运行控制的运行控制的运行控制6AppletApplet的生命周期的生命周期的生命周期的生命周期初始态(瞬态)初始态(瞬态)初始态(瞬态)初始态(瞬态)运行态运行态运行态运行态停止态停止态停止态停止态消亡态消亡态消亡态消亡态离开离开离开离开webweb页面:极小页面:极小页面:极小页面:极小
8、化或装入其他页面,化或装入其他页面,化或装入其他页面,化或装入其他页面,调用调用调用调用stop()stop()方法方法方法方法重新装入或改变页面重新装入或改变页面重新装入或改变页面重新装入或改变页面大小或返回大小或返回大小或返回大小或返回WebWeb页面,页面,页面,页面,调用调用调用调用start()start()方法方法方法方法关闭浏览器,调用关闭浏览器,调用关闭浏览器,调用关闭浏览器,调用destroydestroy()()方法方法方法方法第一次装入,构造第一次装入,构造第一次装入,构造第一次装入,构造appletapplet类,调用类,调用类,调用类,调用init()init()方法
9、方法方法方法调用调用调用调用start()start()方法方法方法方法7 AppletApplet中没有中没有中没有中没有main()main()方法。当方法。当方法。当方法。当AppletApplet被浏览器运行时,被浏览器运行时,被浏览器运行时,被浏览器运行时,init()init()、start()start()、stop()stop()、destroy()destroy()方法等自动执行:方法等自动执行:方法等自动执行:方法等自动执行:v init()init()方法:方法:方法:方法:初始化,自动调用,只执行一次。初始化,自动调用,只执行一次。初始化,自动调用,只执行一次。初始化,
10、自动调用,只执行一次。本方法主要完成一些本方法主要完成一些本方法主要完成一些本方法主要完成一些AppletApplet构造方法所不能完成的工作。构造方法所不能完成的工作。构造方法所不能完成的工作。构造方法所不能完成的工作。vv start()start()方法:方法:方法:方法:初始化后,重入等都将自动调用。初始化后,重入等都将自动调用。初始化后,重入等都将自动调用。初始化后,重入等都将自动调用。本方法是本方法是本方法是本方法是AppletApplet的主体,在其中可以执行一些任务或启的主体,在其中可以执行一些任务或启的主体,在其中可以执行一些任务或启的主体,在其中可以执行一些任务或启 动相关
11、的线程来执行任务。动相关的线程来执行任务。动相关的线程来执行任务。动相关的线程来执行任务。vv stop()stop()方法:方法:方法:方法:离开离开离开离开AppletApplet所在页面时调用,以停止消耗所在页面时调用,以停止消耗所在页面时调用,以停止消耗所在页面时调用,以停止消耗 系统资源。系统资源。系统资源。系统资源。vv destroy()destroy()方法:方法:方法:方法:浏览器关闭时自动调用,以清除浏览器关闭时自动调用,以清除浏览器关闭时自动调用,以清除浏览器关闭时自动调用,以清除AppletApplet 所用的所有资源。所用的所有资源。所用的所有资源。所用的所有资源。8
12、importjava.awt.*;importjava.awt.*;publicclassSimpleAppletpublicclassSimpleApplet StringBufferbuffer;StringBufferbuffer;publicvoidinit()publicvoidinit()buffer=newStringBuffer();buffer=newStringBuffer();addItem(initializing.);addItem(initializing.);publicvoidstart()publicvoidstart()addItem(starting.);
13、addItem(starting.);publicvoidstop()publicvoidstop()addItem(stopping.);addItem(stopping.);publicvoiddestroy()publicvoiddestroy()addItem(preparingforaddItem(preparingforunloading(destroy).);unloading(destroy).);voidaddItem(StringnewWord)voidaddItem(StringnewWord)System.out.println(newWord);System.out.
14、println(newWord);buffer.append(newWord);buffer.append(newWord);repaint();repaint();publicvoidpaint(Graphicsg)publicvoidpaint(Graphicsg)g.drawRect(0,0,getSize().width-1,g.drawRect(0,0,getSize().width-1,getSize().height-1);getSize().height-1);g.drawString(buffer.toString(),5,15);g.drawString(buffer.to
15、String(),5,15);SimpleApplet.javaSimpleApplet.javaAppletApplet的运行控制的运行控制的运行控制的运行控制9 除了四个除了四个除了四个除了四个AppletApplet生命周期控制的方法外,生命周期控制的方法外,生命周期控制的方法外,生命周期控制的方法外,AppletApplet类还类还类还类还提供了一些其他有用的方法:提供了一些其他有用的方法:提供了一些其他有用的方法:提供了一些其他有用的方法:publicpublicAppletContextAppletContext getAppletContextgetAppletContext()
16、()publicpublicStringString getAppletInfogetAppletInfo()():应该被覆盖应该被覆盖应该被覆盖应该被覆盖 publicpublicURLURL getDocumentBasegetDocumentBase()()publicpublicURLURL getCodeBasegetCodeBase()()publicpublicStringString getParameter(getParameter(StringStringname)name)publicpublicStringStringgetParameterInfogetParamet
17、erInfo()():应该被覆盖应该被覆盖应该被覆盖应该被覆盖 publicvoidpublicvoidshowStatus(showStatus(StringString msgmsg)publicpublicbooleanboolean isActiveisActive()()10APPLET PARAMNAME=PARAMNAME=.alternateHTMLalternateHTML AppletApplet与与与与HTMLHTML11ARCHIVE=archiveList File1,File2,ARCHIVE=archiveList File1,File2,给出了给出了给出了给出了
18、AppletApplet类及其运行时所需的类所在的卷文件名。类及其运行时所需的类所在的卷文件名。类及其运行时所需的类所在的卷文件名。类及其运行时所需的类所在的卷文件名。ALIGN=alignmentALIGN=alignment AppletApplet在浏览器中显示时的对齐方式,其含义与效果与图在浏览器中显示时的对齐方式,其含义与效果与图在浏览器中显示时的对齐方式,其含义与效果与图在浏览器中显示时的对齐方式,其含义与效果与图片在片在片在片在HTMLHTML中的一样。其取值有:中的一样。其取值有:中的一样。其取值有:中的一样。其取值有:left,right,top,texttop,left,r
19、ight,top,texttop,middle,absmiddle,baseline,bottom,absbottommiddle,absmiddle,baseline,bottom,absbottom。CODE=appletFileCODE=appletFile 指明需要运行的指明需要运行的指明需要运行的指明需要运行的AppletApplet类文件(类文件(类文件(类文件(.class.class文件),该文件是文件),该文件是文件),该文件是文件),该文件是与与与与codebaseURLcodebaseURL相关的。相关的。相关的。相关的。NAME=appletInstanceNameNA
20、ME=appletInstanceName 给出了给出了给出了给出了AppletApplet类运行时的实例名,这使得同处于一个页面类运行时的实例名,这使得同处于一个页面类运行时的实例名,这使得同处于一个页面类运行时的实例名,这使得同处于一个页面的不同的不同的不同的不同AppletApplet之间能够相互通信。方法之间能够相互通信。方法之间能够相互通信。方法之间能够相互通信。方法getAppletContext()getAppletContext()可以得到同一个方页面中其它可以得到同一个方页面中其它可以得到同一个方页面中其它可以得到同一个方页面中其它AppletApplet类。类。类。类。12
21、CODEBASE=codebaseURLCODEBASE=codebaseURL 指明指明指明指明AppletApplet类文件所在类文件所在类文件所在类文件所在URLURL基址,在基址,在基址,在基址,在AppletApplet类中,方法类中,方法类中,方法类中,方法getCodeBase()getCodeBase()可以获取该属性。如果这个属性没有指明,可以获取该属性。如果这个属性没有指明,可以获取该属性。如果这个属性没有指明,可以获取该属性。如果这个属性没有指明,那么那么那么那么AppletApplet类文件必须与包含它的类文件必须与包含它的类文件必须与包含它的类文件必须与包含它的HTM
22、LHTML页面在同一个地页面在同一个地页面在同一个地页面在同一个地 方,方法方,方法方,方法方,方法getCodeBase()getCodeBase()返回的值与返回的值与返回的值与返回的值与getDocumentBase()getDocumentBase()相同。相同。相同。相同。ALT=alternateTextALT=alternateText 如果浏览器支持如果浏览器支持如果浏览器支持如果浏览器支持AppletApplet但不能运行它,就显示但不能运行它,就显示但不能运行它,就显示但不能运行它,就显示alternateTextalternateText 中所给出的文字。否则就忽略它。中
23、所给出的文字。否则就忽略它。中所给出的文字。否则就忽略它。中所给出的文字。否则就忽略它。WIDTH=pixels HEIGHT=pixels WIDTH=pixels HEIGHT=pixels AppletApplet在浏览器中所显示的高度和宽度(以象素为单位)。在浏览器中所显示的高度和宽度(以象素为单位)。在浏览器中所显示的高度和宽度(以象素为单位)。在浏览器中所显示的高度和宽度(以象素为单位)。VSPACE=pixels HSPACE=pixels VSPACE=pixels HSPACE=pixels AppletApplet在浏览器中显示时上下、左右要预留的高度和宽度,在浏览器中显示
24、时上下、左右要预留的高度和宽度,在浏览器中显示时上下、左右要预留的高度和宽度,在浏览器中显示时上下、左右要预留的高度和宽度,其含义与效果与图片在其含义与效果与图片在其含义与效果与图片在其含义与效果与图片在HTMLHTML中的一样。中的一样。中的一样。中的一样。13 属性可以使得属性可以使得属性可以使得属性可以使得AppletApplet能够从页面中获取所需的能够从页面中获取所需的能够从页面中获取所需的能够从页面中获取所需的参数。参数。参数。参数。AppletApplet可以用其方法可以用其方法可以用其方法可以用其方法getParameter()getParameter()获取获取获取获取属性属
25、性属性属性指定的参数。指定的参数。指定的参数。指定的参数。属性的作用与应用程序中属性的作用与应用程序中属性的作用与应用程序中属性的作用与应用程序中main()main()方法里参数方法里参数方法里参数方法里参数StringargsStringargs的作用是一样的。的作用是一样的。的作用是一样的。的作用是一样的。一个好的小应用程序,应该提供用户能够设置外部参数一个好的小应用程序,应该提供用户能够设置外部参数一个好的小应用程序,应该提供用户能够设置外部参数一个好的小应用程序,应该提供用户能够设置外部参数的功能,以使得用户能够根据自己的需要来应用它。方的功能,以使得用户能够根据自己的需要来应用它。
26、方的功能,以使得用户能够根据自己的需要来应用它。方的功能,以使得用户能够根据自己的需要来应用它。方法法法法getParameterInfo()getParameterInfo()可以得到有关可以得到有关可以得到有关可以得到有关属性的说属性的说属性的说属性的说明信息。明信息。明信息。明信息。alternateHTMLalternateHTML如果浏览器不支持如果浏览器不支持如果浏览器不支持如果浏览器不支持AppletApplet,就解释,就解释,就解释,就解释alternateHTMLalternateHTML所给所给所给所给出的出的出的出的HTMLHTML代码。否则就忽略它。代码。否则就忽略它
27、。代码。否则就忽略它。代码。否则就忽略它。14importjava.awt.*;importjava.awt.*;publicclassAppletParapublicclassAppletPara Strings1,s2;Strings1,s2;publicvoidinit()publicvoidinit()s1=getParameter(p1);s2=getParameter(p2);publicvoidpaint(Graphicsg)publicvoidpaint(Graphicsg)g.drawString(s1,10,10);g.drawString(s1,10,10);g.draw
28、String(s2,10,30);g.drawString(s2,10,30);AppletParameterTestAppletParameterTestapplet 两个步骤:两个步骤:两个步骤:两个步骤:n n 在在在在AppletApplet类中:类中:类中:类中:s1=s1=getParameter(p1);getParameter(p1);n n 在页面中设置在页面中设置在页面中设置在页面中设置AppletApplet参数:参数:参数:参数:value=1111111AppletPara.javaAppletPara.java15importjava.awt.*;importjav
29、a.awt.*;publicclassAppletAppextendspublicclassAppletAppextendsAppletApplet publicStrings;publicStrings;publicvoidinit()publicvoidinit()s=newString(“Hellos=newString(“HelloWorld!”);World!”);publicvoidpaint(Graphicsg)publicvoidpaint(Graphicsg)g.drawString(s,25,25);g.drawString(s,25,25);一个一个一个一个JavaJav
30、a类文件可以既是一个类文件可以既是一个类文件可以既是一个类文件可以既是一个JavaAppletJavaApplet,又是一个,又是一个,又是一个,又是一个JavaApplicationJavaApplication,它既可以在浏览器中运行,又可以作为它既可以在浏览器中运行,又可以作为它既可以在浏览器中运行,又可以作为它既可以在浏览器中运行,又可以作为ApplicationApplication单独运行。单独运行。单独运行。单独运行。publicstaticvoidmain(Stringargs)publicstaticvoidmain(Stringargs)Framef=newFrame(“A
31、pplet-App”);Framef=newFrame(“Applet-App”);AppletAppapp=newAppletApp();AppletAppapp=newAppletApp();f.add(app,“Center”);f.add(app,“Center”);f.setSize(200,200);f.setSize(200,200);f.setVisible(true);f.setVisible(true);f.addWindowListener(newf.addWindowListener(newWindowAdapter()WindowAdapter()publicvoid
32、publicvoidwindowClosing(WindowEvente)windowClosing(WindowEvente)System.exit(0);System.exit(0);););app.init();app.init();app.start();app.start();AppletApp.javaAppletApp.javaAppletApplet与与与与ApplicationApplication16图形操作图形操作图形操作图形操作paint()paint()、update()update()和和和和repaint()repaint()vvAppletApplet本身是一个
33、本身是一个本身是一个本身是一个AWTAWT组件,因此它也具有一般组件,因此它也具有一般组件,因此它也具有一般组件,因此它也具有一般AWTAWT组件的图组件的图组件的图组件的图形绘制功能。形绘制功能。形绘制功能。形绘制功能。vvAppletApplet中有三个显示相关的方法中有三个显示相关的方法中有三个显示相关的方法中有三个显示相关的方法:paint():paint()、update()update()、repaint()repaint()vvAppletApplet的显示更新是由一个的显示更新是由一个的显示更新是由一个的显示更新是由一个AWTAWT线程来控制完成的,它主要负线程来控制完成的,它
34、主要负线程来控制完成的,它主要负线程来控制完成的,它主要负责两种显示更新情况:责两种显示更新情况:责两种显示更新情况:责两种显示更新情况:(1 1)第一是曝光,表示部分显示区域被遮盖、调整大小、最第一是曝光,表示部分显示区域被遮盖、调整大小、最第一是曝光,表示部分显示区域被遮盖、调整大小、最第一是曝光,表示部分显示区域被遮盖、调整大小、最大最小化等,这种情况随时会发生,需要系统调用大最小化等,这种情况随时会发生,需要系统调用大最小化等,这种情况随时会发生,需要系统调用大最小化等,这种情况随时会发生,需要系统调用paint()paint()方法;方法;方法;方法;(2 2)第二是程序需要重画显示
35、区域,添加一些新的显示内容,第二是程序需要重画显示区域,添加一些新的显示内容,第二是程序需要重画显示区域,添加一些新的显示内容,第二是程序需要重画显示区域,添加一些新的显示内容,需要程序调用需要程序调用需要程序调用需要程序调用repaint()repaint()方法。方法。方法。方法。17AWTthreadAWTthread(waitingwaiting)update()update():clearareaclearareacallpaint()callpaint()paint()paint()程序调用程序调用程序调用程序调用repaint()repaint()ExposureExposure
36、:遮盖、调整大小、遮盖、调整大小、遮盖、调整大小、遮盖、调整大小、最大最小化等最大最小化等最大最小化等最大最小化等18v paint(Graphics g)paint(Graphics g)方法方法方法方法 AppletApplet本身是一个容器,因此任何输出都必须用图形方法本身是一个容器,因此任何输出都必须用图形方法本身是一个容器,因此任何输出都必须用图形方法本身是一个容器,因此任何输出都必须用图形方法paintpaint()()。当小应用首次被装载,以及每次窗口放大、缩小、刷新当小应用首次被装载,以及每次窗口放大、缩小、刷新当小应用首次被装载,以及每次窗口放大、缩小、刷新当小应用首次被装载
37、,以及每次窗口放大、缩小、刷新时都要调用时都要调用时都要调用时都要调用paint()paint()方法。方法。方法。方法。paint()paint()是由是由是由是由AWTAWT线程调用的,而不线程调用的,而不线程调用的,而不线程调用的,而不是由程序调用,当程序希望调用是由程序调用,当程序希望调用是由程序调用,当程序希望调用是由程序调用,当程序希望调用paintpaint方法时,用方法时,用方法时,用方法时,用repaint()repaint()方方方方法。法。法。法。paint()paint()方法的参数是方法的参数是方法的参数是方法的参数是GraphicsGraphics类的对象类的对象类
38、的对象类的对象 g g,该对象不是由该对象不是由该对象不是由该对象不是由newnew产生的,而是由系统或其他方式直接将生成好的产生的,而是由系统或其他方式直接将生成好的产生的,而是由系统或其他方式直接将生成好的产生的,而是由系统或其他方式直接将生成好的GraphicsGraphics对象当作方法的参数,再交给对象当作方法的参数,再交给对象当作方法的参数,再交给对象当作方法的参数,再交给paint()paint()方法。方法。方法。方法。paint()paint()方法必须被重写以绘制自己所需的内容。方法必须被重写以绘制自己所需的内容。方法必须被重写以绘制自己所需的内容。方法必须被重写以绘制自己
39、所需的内容。19v update()update()方法方法方法方法 update()update()方法用于更新图形。它首先清除背景,然后设置方法用于更新图形。它首先清除背景,然后设置方法用于更新图形。它首先清除背景,然后设置方法用于更新图形。它首先清除背景,然后设置前景,再调用前景,再调用前景,再调用前景,再调用paint()paint()方法完成方法完成方法完成方法完成AppletApplet中的具体绘图。一般不中的具体绘图。一般不中的具体绘图。一般不中的具体绘图。一般不重写重写重写重写update()update()方法。方法。方法。方法。v repaint()repaint()方法方
40、法方法方法 repaint()repaint()方法主要用于重绘图形,它是通过调用方法主要用于重绘图形,它是通过调用方法主要用于重绘图形,它是通过调用方法主要用于重绘图形,它是通过调用update()update()方法来实现图形重绘的。当组件外形发生变化时,系统自动方法来实现图形重绘的。当组件外形发生变化时,系统自动方法来实现图形重绘的。当组件外形发生变化时,系统自动方法来实现图形重绘的。当组件外形发生变化时,系统自动调用调用调用调用repaint()repaint()方法。方法。方法。方法。AWTAWT线程要处理组件的绘图工作,并负责其输入事件,线程要处理组件的绘图工作,并负责其输入事件,
41、线程要处理组件的绘图工作,并负责其输入事件,线程要处理组件的绘图工作,并负责其输入事件,因此必须尽量缩短因此必须尽量缩短因此必须尽量缩短因此必须尽量缩短paint()paint()方法和方法和方法和方法和update()update()方法的长度,特别方法的长度,特别方法的长度,特别方法的长度,特别是在是在是在是在paint()paint()方法中,不要执行太消耗时间的操作。方法中,不要执行太消耗时间的操作。方法中,不要执行太消耗时间的操作。方法中,不要执行太消耗时间的操作。20 在在在在paint()paint()方法中有一个方法中有一个方法中有一个方法中有一个GraphicsGraphic
42、s类参数,它是画类参数,它是画类参数,它是画类参数,它是画图的关键。它支持两种绘制:一是基本的绘图,包图的关键。它支持两种绘制:一是基本的绘图,包图的关键。它支持两种绘制:一是基本的绘图,包图的关键。它支持两种绘制:一是基本的绘图,包括画点、线、矩形、文字等;二是画图象。在进行括画点、线、矩形、文字等;二是画图象。在进行括画点、线、矩形、文字等;二是画图象。在进行括画点、线、矩形、文字等;二是画图象。在进行基本画图时,可以设定所需的颜色和字体等,这需基本画图时,可以设定所需的颜色和字体等,这需基本画图时,可以设定所需的颜色和字体等,这需基本画图时,可以设定所需的颜色和字体等,这需要用到要用到要
43、用到要用到FontFont、FontMetricsFontMetrics和和和和ColorColor三个类。三个类。三个类。三个类。21 AppletApplet本身是一个本身是一个本身是一个本身是一个AWTAWT组件,因此可以对组件,因此可以对组件,因此可以对组件,因此可以对其中所发生的事件进行处理,其处理与前面所其中所发生的事件进行处理,其处理与前面所其中所发生的事件进行处理,其处理与前面所其中所发生的事件进行处理,其处理与前面所讲的图形用户界面程序的设计是一样的。讲的图形用户界面程序的设计是一样的。讲的图形用户界面程序的设计是一样的。讲的图形用户界面程序的设计是一样的。22 Applet
44、Applet是从继承而来,因此它本身也是一个容是从继承而来,因此它本身也是一个容是从继承而来,因此它本身也是一个容是从继承而来,因此它本身也是一个容器,可以往其中添加其他的器,可以往其中添加其他的器,可以往其中添加其他的器,可以往其中添加其他的AWTAWT组件,从而构造组件,从而构造组件,从而构造组件,从而构造更复杂、更有用的更复杂、更有用的更复杂、更有用的更复杂、更有用的AppletApplet程序。程序。程序。程序。往往往往AppletApplet中添加其他中添加其他中添加其他中添加其他AWTAWT组件及其事件处理与组件及其事件处理与组件及其事件处理与组件及其事件处理与前面所讲的图形用户界
45、面程序的设计是一样的。前面所讲的图形用户界面程序的设计是一样的。前面所讲的图形用户界面程序的设计是一样的。前面所讲的图形用户界面程序的设计是一样的。23播放声音播放声音播放声音播放声音 JavaJava语言提供了播放声音的方法,但目前语言提供了播放声音的方法,但目前语言提供了播放声音的方法,但目前语言提供了播放声音的方法,但目前JavaJava只支持只支持只支持只支持“*.au”“*.au”格式的声音,而且只有在格式的声音,而且只有在格式的声音,而且只有在格式的声音,而且只有在AppletApplet中才能播放声音,中才能播放声音,中才能播放声音,中才能播放声音,ApplicationAppl
46、ication中是不行的。有两种方法可以在中是不行的。有两种方法可以在中是不行的。有两种方法可以在中是不行的。有两种方法可以在AppletApplet中实现中实现中实现中实现播放声音。播放声音。播放声音。播放声音。第一种方法是利用第一种方法是利用第一种方法是利用第一种方法是利用AppletApplet类提供的方法直接播放声音:类提供的方法直接播放声音:类提供的方法直接播放声音:类提供的方法直接播放声音:publicvoidplay(URLpublicvoidplay(URLurlurl)publicvoidplay(URLpublicvoidplay(URLurlurl,Stringname)
47、,Stringname)例:例:例:例:play(play(getCodeBasegetCodeBase(),“(),“boing.auboing.au”);”);但这两个方法是一次性播放的,不能反复播放。要想但这两个方法是一次性播放的,不能反复播放。要想但这两个方法是一次性播放的,不能反复播放。要想但这两个方法是一次性播放的,不能反复播放。要想反复播放,就必须使用第二种方法反复播放,就必须使用第二种方法反复播放,就必须使用第二种方法反复播放,就必须使用第二种方法。24 第二种方法是利用接口和第二种方法是利用接口和第二种方法是利用接口和第二种方法是利用接口和AppletApplet类一起实现声
48、音播放。类一起实现声音播放。类一起实现声音播放。类一起实现声音播放。接口接口接口接口AudioClipAudioClip中有三个方法:中有三个方法:中有三个方法:中有三个方法:publicvoidplay()publicvoidplay():播放一遍播放一遍播放一遍播放一遍 publicvoidloop()publicvoidloop():循环播放循环播放循环播放循环播放 publicvoidstop()publicvoidstop():停止播放停止播放停止播放停止播放 AudioClipAudioClip是一个接口,因此不能直接是一个接口,因此不能直接是一个接口,因此不能直接是一个接口,因此
49、不能直接newnew出一个声音对出一个声音对出一个声音对出一个声音对象实例,它必须和象实例,它必须和象实例,它必须和象实例,它必须和AppletApplet类一起使用,利用类一起使用,利用类一起使用,利用类一起使用,利用AppletApplet类提供的类提供的类提供的类提供的声音装载方法载入一个声音文件,形成一个声音对象实例:声音装载方法载入一个声音文件,形成一个声音对象实例:声音装载方法载入一个声音文件,形成一个声音对象实例:声音装载方法载入一个声音文件,形成一个声音对象实例:publicpublicAudioClipAudioClip getAudioClip(getAudioClip(U
50、RLURL urlurl)publicpublicAudioClipAudioClip getAudioClip(getAudioClip(URLURL urlurl,StringStringname)name)装载的声音文件后,就可以利用装载的声音文件后,就可以利用装载的声音文件后,就可以利用装载的声音文件后,就可以利用AudioClipAudioClip的方法来进行的方法来进行的方法来进行的方法来进行声音操作了。声音操作了。声音操作了。声音操作了。25publicclassSoundPlayextendsAppletpublicclassSoundPlayextendsApplet Aud