javaApplet应用程序.ppt

上传人:tia****nde 文档编号:11496729 上传时间:2020-04-25 格式:PPT 页数:49 大小:587KB
返回 下载 相关 举报
javaApplet应用程序.ppt_第1页
第1页 / 共49页
javaApplet应用程序.ppt_第2页
第2页 / 共49页
javaApplet应用程序.ppt_第3页
第3页 / 共49页
点击查看更多>>
资源描述
2020/4/25,1,Java面向对象程序设计ProgramminginJava,2020/4/25,2,第8章Applet应用程序,2020/4/25,3,本章总体纲要,小应用程序小应用程序HTML标记符应用程序和小应用程序,2020/4/25,4,小应用程序,什么是小应用程序?类的层次结构JApplet与Applet之间的不同点小应用程序的生命周期小应用程序的安全性,2020/4/25,5,Applet应用程序,又称为小应用程序,是嵌入到浏览器中的程序。Applet运行于浏览器上,可以生成生动的页面,进行友好的人机交互,同时还能处理图像、声音、动画等多媒体数据。Applet在Java的成长过程中起到了不可估量的作用,到今天Applet依然是Java程序设计最吸引人的地方之一,2020/4/25,6,8.1Applet基础,JavaApplet是用Java语言编写的小应用程序,这些程序是直接嵌入到页面中,由支持Java的浏览器(IE或Nescape)解释执行,能够产生特殊效果的程序。它可以大大提高Web页面的交互能力和动态执行能力。包含Applet的网页被称为Java-powered页,可以称其为Java支持的网页。本节介绍Applet的基础知识,包括Applet与浏览器,查看、显示Applet以及Applet生命周期。,2020/4/25,7,8.1.1查看Applet,在查看Applet时,可以使用支持Java的Web浏览器,或者JDK自带的AppletViewer浏览。其中,在浏览器中显示时,Applet是由嵌入在Web页面中的Applet相关HTML标志来运行。Aappletviewer提供了一个Java运行环境,在其中可测试Applet。appletviewer读取applet的HTML文件并在一个窗口中运行它们。,2020/4/25,8,2020/4/25,9,8.1.2Applet与浏览器,虽然Applet可以在appletviewer中进行查看,但随着Java的发展,越来越多的网页使用到Applet。虽然允许在Web浏览器中查看Applet。但是目前有多种浏览器版本,有的只支持Java1.0,有的只支持Java1.1,很少有支持Java2.0平台的。而且,由于历史原因,在页面中嵌入Applet产生了几种相互不兼容的方式,不同的浏览器、乃至同一个浏览器的不同版本,支持的标签都不完全相同。,2020/4/25,10,8.1.3显示Applet,Applet是一种特殊的Java程序,它不能独立运行。编译器将Applet源程序编译成Java字节码(Byte-Code)后,在网页中加载的是Java字节码。在网络上如果查看包含Java字节码的网页,则Web服务器将编译好的Java字节码送至客户端的浏览器中执行,2020/4/25,11,8.1.4Applet生命周期,Applet的生命周期相对于Application而言较为复杂。在其生命周期中涉及到Applet类的4个方法(也被JApplet类继承):init()、start()、stop()和destroy()。Applet的生命周期中有4个状态:初始态、运行态、停止态和消亡态。当程序执行完init()方法以后,Applet程序就进入了初始态;然后马上执行start()方法,Applet程序进入运行态;当Applet程序所在的浏览器图标化或者转入其他页面时,该Applet程序马上执行stop()方法,Applet程序进入停止态;在停止态中,如果浏览器又重新装载该Applet程序所在的页面,或者浏览器从图标中复原,则Applet程序马上调用start()方法,进入运行态;当然,在停止态时,如果浏览器关闭,则Applet程序调用destroy()方法,进入消亡态。,2020/4/25,12,小应用程序的生命周期,所有的小应用程序具有如下的五个成员方法:publicvoidinit():在小应用程序的生命周期中只会被调用一次,而且是在第一次加载小应用程序时publicvoidstart():当小应用程序在启动或重新启动时,会调用此方法publicvoidpaint():绘制小应用程序的图形界面publicvoidstop():当小应用程序被图标化或从当前网页转到其它网页时,会调用此方法publicvoiddestroy():在小应用程序的生命周期中只会被调用一次,而且是在(关闭网页之前)卸载小应用程序时,2020/4/25,13,小应用程序的生命周期,2020/4/25,14,8.2Applet类API,在Applet类中可以实现绘图等功能,这些都与Applet所继承的类有关。在这个继承体系中,Applet的直接父类Panel是最简单的容器类,Panel的直接父类Container是一个一般的容器类,Container的直接父类Component是一个具有图形表示能力的类,其对象可在屏幕上显示,并可与用户进行交互。Applet类的主要方法有init()、start()、paint()、repaint()、stop()和destroy()。,2020/4/25,15,8.2Applet类API,小应用程序是可以嵌入到HTML(HypertextMarkupLanguage)文件中运行的Java程序一般是java.applet.Applet(或javax.swing.JApplet)的子类通过appletviewer或HTML浏览器运行,2020/4/25,16,类的层次结构,java.lang.Object|+-java.awt.Component|+-java.awt.Container|+-java.awt.Panel|+-java.applet.Applet|+-javax.swing.JApplet,2020/4/25,17,JApplet与Applet之间的不同点,类JApplet是类java.applet.Applet的子类类JApplet与Swing组件配套默认的布局方式不同JAppletBorderLayout.AppletFlowLayout.往容器JApplet中添加组件必须通过contentPane例如:给小应用程序添加组件使用Applet,代码如下:applet.add(child);使用Japplet,代码如下:japplet.getContentPane().add(child);,2020/4/25,18,8.3Applet的HTML标记和属性,由于Applet是需要嵌入在HTML中运行的,所以Applet的调试和运行都必须和HTML进行协作。而HTML是超文本标记语言,它通过各种各样的标记来显示、编排超文本信息。在HTML中嵌入Applet同样需要一组约定的特殊标记,2020/4/25,19,8.3Applet的HTML标记和属性,2020/4/25,20,8.3.1定位属性,定位属性只指定Applet位置的属性,包含WIDTH、HEIGHT和ALIGN。WIDTH和HEIGHT:这2个属性为必须的,它们定义Applet的大小,均以像素为单位,使用浏览器查看Applet时,该数据为Applet的初始大小。ALIGN:该属性定义了Applet的对齐方式。,2020/4/25,21,8.3.2编码属性,编码属性用来告诉浏览器如何定位Applet的代码,包含code、codebase和archive。1Code:该属性为必需的属性。它告诉浏览器这个Applet需要用的类文件名,如Myclass.class。该属性需要与下面提到的codebase进行区别。code属性是类名称,但不是相对于codebase(代码库)。如果没有指定codebase,则该属性指明的类名相当对当前页面。如果类在包中,则该属性应标明相对于页面文件的位置,如chapter08/sample8_1/Sample8_1.class。也许该类中还调用了其他的类,Applet在运行时会根据code属性值自动调用与该类相关的类。,2020/4/25,22,8.3.2编码属性,2codebase该属性为可选属性,用来指明类文件的URL。如果文件Myclass.class位于chapter08/sample8_1/中,而页面文件位于与chapter08相同的目录中,则可以使用下面的标记:,2020/4/25,23,标记符Code和Codebase,标记符CODE用来指定小应用程序所对应的“.class”文件标记符CODEBASE用来指定URL(网络资源定位器)标明“.class”所在的位置/路径示例1:示例2:,2020/4/25,24,8.3.2编码属性,3archive该属性为可选属性。标明Java存档文件、包、包含类文件和类相关的其他文件(即JAR文件)。JAR文件使用逗号隔开,例如:,2020/4/25,25,JAR压缩文档和标记符ARCHIVE,将小应用程序所需要的所有图像、声音以及“.class”文件压缩成一个JAR压缩文档一般可以大大减少加载小应用程序的时间每个文件加载需要独立的HTTP连接许多文件许多次连接许多文件组成一个文件一次连接数据被压缩减少数据本身的传输时间,2020/4/25,26,示例:(ARCHIVE),javac*.javajar-cvfall.jar*.class,AnappletExample,命令,AppletExample.html,2020/4/25,27,8.3.2编码属性,4object该属性用来指定序列化的Applet对象文件的名字,显示Applet时对象从文件中反序列化,该属性非常特殊尽量不要使用该属性。5name就像每个人都有自己的名字一样。每个Applet也有自己的名字,这个属性指明Applet的名字。这样同一页面中的Applet或者JavaScript都可以调用该Applet,该属性为可选属性。,2020/4/25,28,8.4创建Applet,使用Applet的HTML文件,由支持Java的网页浏览器下载运行。也可以通过Java开发工具中的appletviewer来运行。在编写新的Apple程序时,可以分为带参数Applet和不带参数Applet,即Applet程序是否向浏览器传递参数。,2020/4/25,29,8.4.1简单Applet,简单Applet即不向浏览器传递参数的Applet。对于所有的Applet来说,其目标是创建与用户交互的界面,所以Applet需要创建GUI组件,完成图像、动画输入等任务。创建Applet一般包含如下的步骤。(1)引入需要的类。(2)定义Applet的主类,该类继承Applet类。(3)重载Applet类中的方法。(4)其他方法。(5)将Applet类添加至HTML代码中。,2020/4/25,30,8.4.2向Applet传递参数,如果Applet需要参数,则编写时比上一节的简单Applet稍微复杂一些。因为在JavaApplication中,都是通过命令行向main()方法传递参数。但是在Applet中是没有main()方法的。但是在Applet中,可以在HTML中使用标记定义参数,格式如下所示。,2020/4/25,31,给小应用程序传递参数,给小应用程序传递参数,在HTML文件中介于和之间给小应用程序传递参数,在程序代码中publicStringgetParameter(Stringname)类java.applet.Applet的成员方法,2020/4/25,32,示例:J_Applet.java,importjava.awt.*;importjavax.swing.*;publicclassJ_AppletextendsJAppletpublicvoidpaint(Graphicsg)Strings=getParameter(TestPara);g.drawString(ValueofTestParais+s+.,10,50);/方法paint结束/类J_Applet结束,AnappletExample,ValueofTestParaisTestValue.,J_Applet.java,AppletExample.html,程序输出,2020/4/25,33,8.5Applet与Application,在本章之前的Java程序,一般都具有一样的特征:包含main()方法。当类中包含main()方法时,才可以运行,这样的程序称之为应用(Application)。应用程序与本章中所谈到的Applet程序是有一定区别的。应用程序可以使用java命令运行。而Applet需要嵌入到HTML页面中,利用appletviewer命令在appletviewer中显示。那么既然应用程序和Applet程序都由Java语言编写,那么能不能将两者整合,使程序既是Applet程序,又是应用程序呢?为了达到这样的目的,首先看二者的区别在哪里。,2020/4/25,34,8.5Applet与Application,可以编写一个程序,它既是应用程序,又是小应用程序。单个“.class”文件既可以按应用程序执行,又可以按小应用程序执行,2020/4/25,35,示例:J_List.java,/J_List.java;/同时是应用程序与小应用程序的图像显示例程importjava.awt.BorderLayout;importjava.awt.Container;importjava.awt.Image;importjava.io.File;importjavax.imageio.ImageIO;importjavax.swing.event.ListSelectionEvent;importjavax.swing.event.ListSelectionListener;importjavax.swing.Icon;importjavax.swing.ImageIcon;importjavax.swing.JApplet;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JList;publicclassJ_ListextendsJAppletprivateStringm_items=snow.gif,flag.gif,rain.gif;privateJListm_list=newJList(m_items);privateJLabelm_label=newJLabel();privateIconm_icons=newImageIcon3;privateImagem_image=null;Containerm_container=null;,2020/4/25,36,示例:J_List.java,publicvoidinit()inti;if(m_image=null)m_image=newImage3;for(i=0;i3;i+)m_imagei=getImage(getCodeBase(),m_itemsi);/if结构结束for(i=0;i3;i+)m_iconsi=newImageIcon(m_imagei);if(m_container=null)m_container=getContentPane();m_container.setLayout(newBorderLayout();m_container.add(m_list,BorderLayout.WEST);m_list.setSelectedIndex(0);m_list.addListSelectionListener(newListSelectionListener()publicvoidvalueChanged(ListSelectionEvente)ints=m_list.getAnchorSelectionIndex();m_label.setIcon(m_iconss);/方法valueChanged结束/实现接口ListSelectionListener的内部类结束);/addListSelectionListener方法调用结束,2020/4/25,37,示例:J_List.java,m_container.add(m_label,BorderLayout.EAST);m_label.setIcon(m_icons0);/方法init结束publicstaticvoidmain(Stringargs)JFramef=newJFrame(应用程序);J_Listapp=newJ_List();app.m_container=f.getContentPane();app.m_image=newImage3;tryfor(inti=0;i3;i+)app.m_imagei=ImageIO.read(newFile(app.m_itemsi);catch(Exceptione)System.err.println(发生异常:+e);e.printStackTrace();/try-catch结构结束app.init();f.setSize(250,110);f.setVisible(true);f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/方法main结束/类J_List结束,2020/4/25,38,示例:AppletExample.html,小应用程序例程图像显示,2020/4/25,39,编译,运行)以及行分隔符(如n或rn)之外,Applet找不到与本地计算机有关的任何信息。特别是,小应用程序找不到用户名、电子邮件地址等。(5)一个小应用程序弹出的所有窗口都会发出一条警告消息。,2020/4/25,45,8.7.2Applet沙箱,Java提供的安全模型即沙箱模型。沙箱是Java编程语言和开发环境中的程序区及规则,程序员建立当作网页发送的Java代码(Applet)时需要使用它。由于Applet自动当作一部分网页发送,并且一到达就运行,如果它允许无限制访问内存和操作系统,那么Applet就很容易偶然或故意制造损害。沙箱的限制对Applet可能请求或访问的系统资源提供了严格限制。实际上,程序员必须编写只在沙箱内作用的代码。可把沙箱想象成计算机内Applet代码可自由作用的一小块区域。,2020/4/25,46,8.8实例研究:显示动画,动画是JavaApplet最吸引人的特性之一。如果不用图像,用Java实现动画的原理就与放映动画片相似:在短时间内快速地顺序显示图片。显示动画的原理与显示图片类似,可以使用Graphics类中的drawImage()方法显示图片。因为GIF被分解为多个文件,所以只要顺序显示文件即可达到动画的效果。可以使用repaint()方法不断让Applet显示新的图片。本小节将介绍在Java中编写动画的原理,还将介绍关于画布重新绘制的问题。,2020/4/25,47,8.8.1动画原理及重新绘制,1编写动画的原理动画程序其实不难,只要让程序根据一定的规则不断地对画布进行重新绘制即可。一般的实现策略是,将绘制的规则编写到paint()方法中,定时让paint()方法重新绘制画布即可。2重新绘制前面介绍动画编写的原理时,涉及到了使用paint()方法进行重绘的问题。要特别注意的是,不能直接调用paint()方法进行重绘,而应该调用画布的repaint()方法请求系统执行paint()方法进行重绘。,2020/4/25,48,8.8.2Timer类简介,开发动画时经常需要定时执行指定的任务,可以自己开发一个线程来实现。如果任务很简单,自己开发线程就不是很合算。为了简化开发,Swing中专门提供了一个用来定时执行任务的类javax.swing.Timer。使用Timer类来开发定时执行指定任务的类非常简单,该类仅提供了一个构造器,声明如下。publicTimer(intdelay,ActionListenerlistener)参数delay为指定的初始延迟和动作事件间延迟的毫秒数。参数listener为指定的初始监听器,可以为null。,2020/4/25,49,8.9小结,Applet能够带来更丰富的显示效果。本章介绍了如何创建Applet,Applet的相关属性及安全机制。通过本章的学习,可以结合Java的GUI编程,创建出更好的Applet程序。,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


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

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


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