javaApplet知识要点讲解.ppt_第1页
javaApplet知识要点讲解.ppt_第2页
javaApplet知识要点讲解.ppt_第3页
javaApplet知识要点讲解.ppt_第4页
javaApplet知识要点讲解.ppt_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2019/5/27 02:34,1,第8章 Applet,武汉大学计算机学院计算机应用系,2019/5/27 02:34,第 2 页,深入了解Applet生命周期的主要方法和特点 熟练掌握Applet程序的编写方法 深入了解Applet的安全机制及其合理运用 熟练掌握Applet与多线程、多媒体等功能的综合运用,本章学习要点,2019/5/27 02:34,第 3 页,8.1 Applet基础,Java小应用程序(Java Applet)是使用Java语言编写的一段代码,它能够在浏览器环境中运行。 Applet与Application地主要区别在于它们的执行方式不同: Application是使用命令行命令直接运行,从其main()方法开始运行的。如果是图形界面则以Frame为基础,也可继承或者不继承任何类 ; Applet则是在浏览器中运行的,首先必须创建一个HTML文件,通过编写HTML语言代码告诉浏览器载入何种Applet以及如何运行。每个Applet必须是通过扩展Java的Applet类来实现的,所有的Applet必须按如下的格式声明: class AppletName extends Applet / / /ysj/hljdxb/,2019/5/27 02:34,第 4 页,1、Applet小应用程序的基础,Web浏览器为Applet提供了JVM,这也是一个重要的安全措施。,小应用程序的限制,2019/5/27 02:34,第 5 页,8.1.1 Applet类的定义,Java对Applet类的定义为: public class Applet extends Panel / constructor public Applet() / selected methods public String getParameter(String name) public void init() public void start() public void stop() public URL getCodeBase() public URL getDocumentBase() ,2019/5/27 02:34,第 6 页,8.1.1 Applet类的定义,1. Applet类的实例变量 利用Applet的构造方法可以创建Applet类的实例。这个类包括多个实例变量。表8.1给出了Applet类的实例变量及其含义。 表8.1 2. Applet类的成员方法 Applet类提供了非常丰富的成员方法。表8.2列出了部分方法 表8.2,2019/5/27 02:34,第 7 页,8.1.2 Applet的生命周期,一个Applet程序一般包含4个重要方法:init()、start()、stop()和destroy()。浏览器在调用Applet时,将自动调用这4个方法。这4个方法的行为构成了Applet的生命周期,即Applet的生命周期是由初始化、开始运行、停止运行和撤销清理等4个过程构成的。,2019/5/27 02:34,第 8 页,8.1.2 Applet的生命周期,Applet的生命周期,2019/5/27 02:34,第 9 页,2.Applet的运行控制,Applet中没有main()方法。当Applet被浏览器运行时, init() 、start()、stop()、destroy()方法等自动执行: init( )方法:初始化,自动调用,只执行一次。本方法主要完成一些在Applet构造方法所不不能完成的工作。 start( )方法:初始化后,重入等都将自动调用。本方法是Applet的主体,在其中可以执行一些任务或启动相关的线程来执行任务。 stop( )方法:离开Applet所在页面时调用,以停止消耗系统资源。 destroy( )方法:浏览器关闭时自动调用,以清除Applet所用的所有资源。,【例8.1】 一个包含4个主要方法的Applet。,2019/5/27 02:34,第 10 页,8.1.3 独立应用程序与Applet的转换,按如下步骤可将一个独立应用程序转换成一个Applet: 装载java.applet的类,将扩展Frame的类改为扩展Applet。 由于init()方法是Applet的标准入口,将构造方法更名为public void init(),去掉原构造方法中对超类的方法的调用以及对show()和pack()方法的调用。 去掉标准的main()方法。 去掉所有对System.exit方法的调用,因为不允许Applet调用这个方法。 如有必要,覆盖public void start()方法和 public void stop()方法,保证Applet在不可见时(用户访问其他Web页面时)不占用系统资源。,2019/5/27 02:34,第 11 页,2.Applet的运行控制,【例8.2】 例5.4创建了一个具有两个按钮的独立应用程序,现在将这个程序改造成一个Applet,并在Web浏览器中执行这个Applet。在实现这个Applet时,覆盖start()和stop()方法,显示附加文本。 本例可以利用上述转换方法进行程序改造, 转换后的程序代码 对应的HTML文件,2019/5/27 02:34,第 12 页,import java.applet.*; import java.awt.*; public class HelloApplet extends Applet public String s; public void init() s = new String(“Hello World!”); public void paint(Graphics g) g.drawString(s,25,25); , Hello World ,8.2 标记,看看一个简单例子:,2019/5/27 02:34,第 13 页,8.2.1 标记属性,HTML中applet标记的使用, . . . alternateHTML ,2019/5/27 02:34,第 14 页,8.2.1 标记属性,ARCHIVE = archiveList File1, File2, 给出了Applet类及其运行时所需的类所在的档案文件名。 CODEBASE = codebaseURL 指明Applet类文件所在URL基址,getCodeBase()方法可以获取该属性。如果这个属性没有指明,那么Applet类文件必须与包含它的HTML页面在同一个地方,getCodeBase()方法返回的值与getDocumentBase()相同。 CODE = appletFile 指明需要运行的Applet类文件(.class文件) NAME = appletInstanceName 给出了Applet类运行时的实例名,这使得同处于一个页面的不同Applet之间能够相互通信。getAppletContext()方法可以得到同一个页面中其它Applet类。,2019/5/27 02:34,第 15 页,8.2.1 标记属性,ALT = alternateText 如果浏览器支持Applet但不能运行它,就显示alternateText中所给出的文字;否则就忽略它。 WIDTH = pixels HEIGHT = pixels Applet在浏览器中所显示的高度和宽度(以象素为单位)。 ALIGN = alignment Applet在浏览器中显示时的对齐方式,其含义与效果与图片在HTML中的一样。其取值有: left, right, top, texttop, middle, absmiddle, baseline, bottom, absbottom。 VSPACE = pixels HSPACE = pixels Applet在浏览器中显示时上下、左右要预留的高度和宽度,其含义与效果与图片在HTML中的一样。,2019/5/27 02:34,第 16 页,8.2.1 标记属性,2019/5/27 02:34,第 17 页,8.2.2 利用标记参数向Applet传递信息,PARAM NAME = appletParameter1 VALUE = value 属性使Applet能从页面中获取所需的参数。Applet可以用getParameter()方法获取属性指定的参数。 属性的作用与应用程序中main()方法里参数String args的作用是一样的。 一个好的小应用程序,应该提供用户能够设置外部参数的功能,以使得用户能够根据自己的需要来应用它。 getParameterInfo()方法可得到有关属性的说明信息。 两个步骤: 在页面中设置Applet参数 在Applet类中:s1 = getParameter(“p1“);,2019/5/27 02:34,第 18 页,8.2.2 利用标记参数向Applet传递信息,public class AppletPara extends Applet String s1,s2; public void init( ) s1 = getParameter(“p1“); s2 = getParameter(“p2“); public void paint(Graphics g) g.drawString(s1,10,10); g.drawString(s2,10,30); , Applet Parameter Test ,2019/5/27 02:34,第 19 页,8.3.1 Applet与图形用户接口(GUI),Applet是一个面板(Panel) 由于Applet是Panel类的子类,所以它继承Panel的默认布局管理器FlowLayout,可以像任何Panel一样包含其他的构件。因此,很容易把构件加入到Applet中,并使用布局控制这些构件在屏幕上的位置。这里有几个Applet常用的方法: add() 加入指定的构件。 remove() 删除指定的构件。 setLayout() 设置布局管理。 有setLayout()方法就可以使用灵活的布局管理器,如AWT提供的GridBagLayout和BorderLayout类。 Applet作为一个Panel对象,还可以分享绘画方法和事件层,2019/5/27 02:34,第 20 页,8.3.1 Applet与图形用户接口(GUI),可通过Applet getImage()方法装载图像 Applet类提供了一种方便的getImage形式,允许指定一个URL作为变元,紧跟第二个变元指明与这个URL相关的图像文件位置。大部分Applet使用它的getCodeBase()和getDocumentBase()方法获得URL。 Applet类及其数据文件的载入 Applet类及其使用的数据文件可以通过网络装入。通过网络载入需要一定的时间,为了减少Applet显示的启动时间,Applet子类可以先显示一条状态消息,让用户知道正在载入信息。如果某些Applet类或数据不需要立即使用,这个Applet可以把这些类和数据的装入预先放在一个后台线程中。,2019/5/27 02:34,第 21 页,8.3.2 Applet与线程,每个Applet都可以在多线程中运行。Applet的绘图方法(paint()和update())总是由AWT绘图和事件处理线程调用。哪些线程执行Applet的生命周期方法(init()、start()、stop()和destroy())取决于运行Applet的浏览器。 许多浏览器为Web页面上的每个Applet分配一个线程,用线程调用这个Applet的周期方法。有些浏览器为每个Applet分配一组线程,因此,很容易找到属于一个具体的Applet的所有线程。即使浏览器为每个Applet建立一个不同线程,编写Applet时还是应该为任何耗时的任务建立一个线程,这样,一个Applet在等待某个耗时的任务完成的时候,可以执行其他的任务。,2019/5/27 02:34,第 22 页,8.3.3 Applet编程技巧,使用图像 如果图像的数据是GIF或JPEG格式,同时用户还知道它的文件或URL,就很容易得到Image对象,只要使用Applet或Toolkit中的getImage()方法即可。Applet类提供了两种方法: public Image getImage(URL url) public Image getImage(URL url, String name) 下面的代码例子说明了如何使用Applet的getImage()方法: Image image1 = getImage(getCodeBase(), “imageFile1.gif“) Image image2 = getImage(getDocumentBase(), “imageFile2.gif“) Image image3 = getImage(new URL(“/graphics/people.gif“),2019/5/27 02:34,第 23 页,Applet 示例,Toolkit类也声明了如下两种getImage()方法: public abstract Image getImage(URL url) public abstract Image getImage(String filename) 为了得到一个Toolkit对象,可以使用Toolkit的getDefultToolkit()方法或者使用Component的getToolkit()方法返回一个Toolkit对象。 下面是使用toolkit.getImage()方法的几个例子: Toolkit toolkit = Toolkit.getDefaultToolkit(); Image image1 = toolkit.getImage(“imageFile1.gif“) Image image2 = toolkit.getImage(new URL(“/graphics /people.gif“),2019/5/27 02:34,第 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),然后利用绘图方法就可以在这个画板上绘图。,2019/5/27 02:34,第 25 页,Applet 示例,【例8.9】 我们首先定义一个Applet类取名为Doodle(随意乱画),在它的init()方法中添加一个画板构件,这个画板是通过继承Canvas类得到的,取名为DoodleCanvas。在init()方法中还增加了标签构件到这个Applet,该标签提示这是一个使用鼠标的画板。同时还添加了一个Clear按钮,它的功能是清除画板的图形。 例8.9 实现在这个画板上绘画主要是利用鼠标事件MouseEvent,获取一个鼠标的坐标点作为上一个点(lastX,lastY),然后在鼠标拖动过程中,在最近获取的鼠标点与获取的上一个点之间画线(drawLine ),再把当前坐标点作为上一个点(lastX,lastY)。不断地重复这个过程,即可实现绘图。,2019/5/27 02:34,第 26 页,Applet 示例,清除绘图区则更为简单,只要在这个Canvas画板上画一个覆盖整个画板的大矩形即可。 同时还要注意到,我们并没有显式地为这个画板定义paint()方法,而是用component的getGraphics()方法来获取一个Graphics对象的引用,这个引用同时也是传给paint()方法的参数。获得这个图形对象的引用后,可以很方便地在mouseDragged()和clear()方法中利用Graphics图形对象的基本绘图方法绘制图形。,2019/5/27 02:34,第 27 页,8.4 利用AppletViewer调试Applet,Java Applet浏览器是指可以运行包含Applet的HTML文件的一切软件系统。HotJava、Netscape Navigator以及Microsoft Internet Explorer等支持Java的网络浏览器都是Applet浏览器,Java Applet都可以在其中运行。 AppletViewer是一个Java应用程序,它可以使得用户无须使用网络浏览器而直接运行Java Applet。但AppletViewer仅仅是一个Applet浏览器,HTML文件中的其他内容将不会被显示出来。因为它忽略除标记以外的所有文档。使用这个程序,要在命令行输入命令: appletviewer filename.html 此处的filename.html是HTML文件,它包含了含有标记和Applet的类文件名。,2019/5/27 02:34,第 28 页,8.4 利用AppletViewer调试Applet,因为appletviewer可以忽略除标记以外的所有文档,我们调试这个程序时,可以把上述标记放到相应Applet的.java文件中,然后加上注释符号。对于这个例子,可以把下面两行加入到AddingMachine.java文件中: / / 这样既可以不影响Applet程序的编译,又可以避免额外产生一个HTML文件。用appletviewer调试这个Applet时,可直接运行如下命令: appletviewer AddingMachine.java 这样调试Applet会更加方便。,2019/5/27 02:34,第 29 页,8.4 利用AppletViewer调试Applet,【例8.10】 创建一个Applet,它可以对用户输入的数值进行加减,然后显示结果。并且使用appletviewer测试这个Applet,再放到支持Java的浏览器执行这个Applet。 完成这个运算器,需要创建两个按钮,一个作加法,一个作减法。数值的输入和加减的结果分别在两个文本域中显示出来。此外,还需要一个reset按钮。因而,这个类的面向对象的3个要素分别为: “Is” : Apple

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论