javaApplet知识要点讲解.ppt

上传人:tia****nde 文档编号:12707009 上传时间:2020-05-14 格式:PPT 页数:32 大小:228KB
返回 下载 相关 举报
javaApplet知识要点讲解.ppt_第1页
第1页 / 共32页
javaApplet知识要点讲解.ppt_第2页
第2页 / 共32页
javaApplet知识要点讲解.ppt_第3页
第3页 / 共32页
点击查看更多>>
资源描述
2020/5/1417:38,1,第8章Applet,武汉大学计算机学院计算机应用系,2020/5/1417:38,第2页,深入了解Applet生命周期的主要方法和特点熟练掌握Applet程序的编写方法深入了解Applet的安全机制及其合理运用熟练掌握Applet与多线程、多媒体等功能的综合运用,本章学习要点,2020/5/1417:38,第3页,8.1Applet基础,Java小应用程序(JavaApplet)是使用Java语言编写的一段代码,它能够在浏览器环境中运行。Applet与Application地主要区别在于它们的执行方式不同:Application是使用命令行命令直接运行,从其main()方法开始运行的。如果是图形界面则以Frame为基础,也可继承或者不继承任何类;Applet则是在浏览器中运行的,首先必须创建一个HTML文件,通过编写HTML语言代码告诉浏览器载入何种Applet以及如何运行。每个Applet必须是通过扩展Java的Applet类来实现的,所有的Applet必须按如下的格式声明:classAppletNameextendsApplet,2020/5/1417:38,第4页,1、Applet小应用程序的基础,Web浏览器为Applet提供了JVM,这也是一个重要的安全措施。,小应用程序的限制,2020/5/1417:38,第5页,8.1.1Applet类的定义,Java对Applet类的定义为:publicclassAppletextendsPanel/constructorpublicApplet()/selectedmethodspublicStringgetParameter(Stringname)publicvoidinit()publicvoidstart()publicvoidstop()publicURLgetCodeBase()publicURLgetDocumentBase(),2020/5/1417:38,第6页,8.1.1Applet类的定义,1.Applet类的实例变量利用Applet的构造方法可以创建Applet类的实例。这个类包括多个实例变量。表8.1给出了Applet类的实例变量及其含义。表8.12.Applet类的成员方法Applet类提供了非常丰富的成员方法。表8.2列出了部分方法表8.2,2020/5/1417:38,第7页,8.1.2Applet的生命周期,一个Applet程序一般包含4个重要方法:init()、start()、stop()和destroy()。浏览器在调用Applet时,将自动调用这4个方法。这4个方法的行为构成了Applet的生命周期,即Applet的生命周期是由初始化、开始运行、停止运行和撤销清理等4个过程构成的。,2020/5/1417:38,第8页,8.1.2Applet的生命周期,Applet的生命周期,2020/5/1417:38,第9页,2.Applet的运行控制,Applet中没有main()方法。当Applet被浏览器运行时,init()、start()、stop()、destroy()方法等自动执行:init()方法:初始化,自动调用,只执行一次。本方法主要完成一些在Applet构造方法所不不能完成的工作。start()方法:初始化后,重入等都将自动调用。本方法是Applet的主体,在其中可以执行一些任务或启动相关的线程来执行任务。stop()方法:离开Applet所在页面时调用,以停止消耗系统资源。destroy()方法:浏览器关闭时自动调用,以清除Applet所用的所有资源。,【例8.1】一个包含4个主要方法的Applet。,2020/5/1417:38,第10页,8.1.3独立应用程序与Applet的转换,按如下步骤可将一个独立应用程序转换成一个Applet:装载java.applet的类,将扩展Frame的类改为扩展Applet。由于init()方法是Applet的标准入口,将构造方法更名为publicvoidinit(),去掉原构造方法中对超类的方法的调用以及对show()和pack()方法的调用。去掉标准的main()方法。去掉所有对System.exit方法的调用,因为不允许Applet调用这个方法。如有必要,覆盖publicvoidstart()方法和publicvoidstop()方法,保证Applet在不可见时(用户访问其他Web页面时)不占用系统资源。,2020/5/1417:38,第11页,2.Applet的运行控制,【例8.2】例5.4创建了一个具有两个按钮的独立应用程序,现在将这个程序改造成一个Applet,并在Web浏览器中执行这个Applet。在实现这个Applet时,覆盖start()和stop()方法,显示附加文本。本例可以利用上述转换方法进行程序改造,转换后的程序代码对应的HTML文件,2020/5/1417:38,第12页,importjava.applet.*;importjava.awt.*;publicclassHelloAppletextendsAppletpublicStrings;publicvoidinit()s=newString(“HelloWorld!”);publicvoidpaint(Graphicsg)g.drawString(s,25,25);,HelloWorld,8.2标记,看看一个简单例子:,2020/5/1417:38,第13页,8.2.1标记属性,HTML中applet标记的使用,.alternateHTML,2020/5/1417:38,第14页,8.2.1标记属性,ARCHIVE=archiveListFile1,File2,给出了Applet类及其运行时所需的类所在的档案文件名。CODEBASE=codebaseURL指明Applet类文件所在URL基址,getCodeBase()方法可以获取该属性。如果这个属性没有指明,那么Applet类文件必须与包含它的HTML页面在同一个地方,getCodeBase()方法返回的值与getDocumentBase()相同。CODE=appletFile指明需要运行的Applet类文件(.class文件)NAME=appletInstanceName给出了Applet类运行时的实例名,这使得同处于一个页面的不同Applet之间能够相互通信。getAppletContext()方法可以得到同一个页面中其它Applet类。,2020/5/1417:38,第15页,8.2.1标记属性,ALT=alternateText如果浏览器支持Applet但不能运行它,就显示alternateText中所给出的文字;否则就忽略它。WIDTH=pixelsHEIGHT=pixelsApplet在浏览器中所显示的高度和宽度(以象素为单位)。ALIGN=alignmentApplet在浏览器中显示时的对齐方式,其含义与效果与图片在HTML中的一样。其取值有:left,right,top,texttop,middle,absmiddle,baseline,bottom,absbottom。VSPACE=pixelsHSPACE=pixelsApplet在浏览器中显示时上下、左右要预留的高度和宽度,其含义与效果与图片在HTML中的一样。,2020/5/1417:38,第16页,8.2.1标记属性,2020/5/1417:38,第17页,8.2.2利用标记参数向Applet传递信息,PARAMNAME=appletParameter1VALUE=value属性使Applet能从页面中获取所需的参数。Applet可以用getParameter()方法获取属性指定的参数。属性的作用与应用程序中main()方法里参数Stringargs的作用是一样的。一个好的小应用程序,应该提供用户能够设置外部参数的功能,以使得用户能够根据自己的需要来应用它。getParameterInfo()方法可得到有关属性的说明信息。两个步骤:在页面中设置Applet参数在Applet类中:s1=getParameter(p1);,2020/5/1417:38,第18页,8.2.2利用标记参数向Applet传递信息,publicclassAppletParaextendsAppletStrings1,s2;publicvoidinit()s1=getParameter(p1);s2=getParameter(p2);publicvoidpaint(Graphicsg)g.drawString(s1,10,10);g.drawString(s2,10,30);,AppletParameterTest,2020/5/1417:38,第19页,8.3.1Applet与图形用户接口(GUI),Applet是一个面板(Panel)由于Applet是Panel类的子类,所以它继承Panel的默认布局管理器FlowLayout,可以像任何Panel一样包含其他的构件。因此,很容易把构件加入到Applet中,并使用布局控制这些构件在屏幕上的位置。这里有几个Applet常用的方法:add()加入指定的构件。remove()删除指定的构件。setLayout()设置布局管理。有setLayout()方法就可以使用灵活的布局管理器,如AWT提供的GridBagLayout和BorderLayout类。Applet作为一个Panel对象,还可以分享绘画方法和事件层,2020/5/1417:38,第20页,8.3.1Applet与图形用户接口(GUI),可通过AppletgetImage()方法装载图像Applet类提供了一种方便的getImage形式,允许指定一个URL作为变元,紧跟第二个变元指明与这个URL相关的图像文件位置。大部分Applet使用它的getCodeBase()和getDocumentBase()方法获得URL。Applet类及其数据文件的载入Applet类及其使用的数据文件可以通过网络装入。通过网络载入需要一定的时间,为了减少Applet显示的启动时间,Applet子类可以先显示一条状态消息,让用户知道正在载入信息。如果某些Applet类或数据不需要立即使用,这个Applet可以把这些类和数据的装入预先放在一个后台线程中。,2020/5/1417:38,第21页,8.3.2Applet与线程,每个Applet都可以在多线程中运行。Applet的绘图方法(paint()和update())总是由AWT绘图和事件处理线程调用。哪些线程执行Applet的生命周期方法(init()、start()、stop()和destroy())取决于运行Applet的浏览器。许多浏览器为Web页面上的每个Applet分配一个线程,用线程调用这个Applet的周期方法。有些浏览器为每个Applet分配一组线程,因此,很容易找到属于一个具体的Applet的所有线程。即使浏览器为每个Applet建立一个不同线程,编写Applet时还是应该为任何耗时的任务建立一个线程,这样,一个Applet在等待某个耗时的任务完成的时候,可以执行其他的任务。,2020/5/1417:38,第22页,8.3.3Applet编程技巧,使用图像如果图像的数据是GIF或JPEG格式,同时用户还知道它的文件或URL,就很容易得到Image对象,只要使用Applet或Toolkit中的getImage()方法即可。Applet类提供了两种方法:publicImagegetImage(URLurl)publicImagegetImage(URLurl,Stringname)下面的代码例子说明了如何使用Applet的getImage()方法:Imageimage1=getImage(getCodeBase(),imageFile1.gif)Imageimage2=getImage(getDocumentBase(),imageFile2.gif)Imageimage3=getImage(newURL(,2020/5/1417:38,第23页,Applet示例,Toolkit类也声明了如下两种getImage()方法:publicabstractImagegetImage(URLurl)publicabstractImagegetImage(Stringfilename)为了得到一个Toolkit对象,可以使用Toolkit的getDefultToolkit()方法或者使用Component的getToolkit()方法返回一个Toolkit对象。下面是使用toolkit.getImage()方法的几个例子:Toolkittoolkit=Toolkit.getDefaultToolkit();Imageimage1=toolkit.getImage(imageFile1.gif)Imageimage2=toolkit.getImage(newURL(,2020/5/1417:38,第24页,Applet示例,显示图像下面的一行代码是要在构件区的左上角以正常尺寸显示一个图像:g.drawImage(image1,0,0,this);而下面的代码是要以(90,0)为起点,显示一个宽300像素、高62像素的图像:g.drawImage(image2,90,0,300,62,this);绘制图形一个Applet就是一个Panel,它也是一个容器(Container),可以容纳其他构件,而且还具有绘制图形的方法。利用这些特点,我们编写一个Applet,在它之上添加一个画板(Canvas),然后利用绘图方法就可以在这个画板上绘图。,2020/5/1417:38,第25页,Applet示例,【例8.9】我们首先定义一个Applet类取名为Doodle(随意乱画),在它的init()方法中添加一个画板构件,这个画板是通过继承Canvas类得到的,取名为DoodleCanvas。在init()方法中还增加了标签构件到这个Applet,该标签提示这是一个使用鼠标的画板。同时还添加了一个Clear按钮,它的功能是清除画板的图形。例8.9实现在这个画板上绘画主要是利用鼠标事件MouseEvent,获取一个鼠标的坐标点作为上一个点(lastX,lastY),然后在鼠标拖动过程中,在最近获取的鼠标点与获取的上一个点之间画线(drawLine),再把当前坐标点作为上一个点(lastX,lastY)。不断地重复这个过程,即可实现绘图。,2020/5/1417:38,第26页,Applet示例,清除绘图区则更为简单,只要在这个Canvas画板上画一个覆盖整个画板的大矩形即可。同时还要注意到,我们并没有显式地为这个画板定义paint()方法,而是用component的getGraphics()方法来获取一个Graphics对象的引用,这个引用同时也是传给paint()方法的参数。获得这个图形对象的引用后,可以很方便地在mouseDragged()和clear()方法中利用Graphics图形对象的基本绘图方法绘制图形。,2020/5/1417:38,第27页,8.4利用AppletViewer调试Applet,JavaApplet浏览器是指可以运行包含Applet的HTML文件的一切软件系统。HotJava、NetscapeNavigator以及MicrosoftInternetExplorer等支持Java的网络浏览器都是Applet浏览器,JavaApplet都可以在其中运行。AppletViewer是一个Java应用程序,它可以使得用户无须使用网络浏览器而直接运行JavaApplet。但AppletViewer仅仅是一个Applet浏览器,HTML文件中的其他内容将不会被显示出来。因为它忽略除标记以外的所有文档。使用这个程序,要在命令行输入命令:appletviewerfilename.html此处的filename.html是HTML文件,它包含了含有标记和Applet的类文件名。,2020/5/1417:38,第28页,8.4利用AppletViewer调试Applet,因为appletviewer可以忽略除标记以外的所有文档,我们调试这个程序时,可以把上述标记放到相应Applet的.java文件中,然后加上注释符号。对于这个例子,可以把下面两行加入到AddingMachine.java文件中:/这样既可以不影响Applet程序的编译,又可以避免额外产生一个HTML文件。用appletviewer调试这个Applet时,可直接运行如下命令:appletviewerAddingMachine.java这样调试Applet会更加方便。,2020/5/1417:38,第29页,8.4利用AppletViewer调试Applet,【例8.10】创建一个Applet,它可以对用户输入的数值进行加减,然后显示结果。并且使用appletviewer测试这个Applet,再放到支持Java的浏览器执行这个Applet。完成这个运算器,需要创建两个按钮,一个作加法,一个作减法。数值的输入和加减的结果分别在两个文本域中显示出来。此外,还需要一个reset按钮。因而,这个类的面向对象的3个要素分别为:“Is”:Applet和ActionListener;“Has”:3个按钮,2个文本域和1个变量域;“Does”:init()方法进行初始化,实现加和减的方法分别完成加减运算;reset()方法完成重新设置;actionPerformed()方法确定事件响应时应该完成哪些操作。,2020/5/1417:38,第30页,7.5小结,Applet程序是在浏览器中运行的,每个Applet程序中必须继承java.applet包中的Applet类。Applet主要包括生命周期的init()、start()、stop()、destroy()4个方法和paint()方法,其中除paint()方法有时需要显式调用外,这些主要方法都是自动执行的。根据应用,用户也可以在Applet程序中定义其他方法或定义其他类,但它们不能自动执行,可以由Applet的主要方法中建立对象或调用其他方法。用线程实现Applet有时候是必要的,因为这样不妨碍浏览器其他程序的执行,编写这样的Applet必须实现Runnable接口。还有一点要明确的是,一个Applet就是一个Panel,也是一个容器。因而可以在Applet增加任何GUI构件,进行绘图和完成其他多媒体功能。,2020/5/1417:38,第31页,2.9小结,applet主类,init(),start(),paint(),stop(),destroy(),自定义方法,applet启动后第一个被执行,在此初始化,init()后被执行,程序主要代码写在此,start()后被执行,写与输出有关的代码,浏览器变换页面时执行,可以省略重写,浏览器关闭时执行,可以省略重写,不能自动被执行,可以由前三个方法调用.例如:start()mymethod(),Classes,mymethod1,mymethode2,Classesmyclass=newClasses()myclass.method1();,.,.,2020/5/1417:38,第32页,结束,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!