《Applet的应用与开发.ppt》由会员分享,可在线阅读,更多相关《Applet的应用与开发.ppt(81页珍藏版)》请在三一办公上搜索。
1、Java高级应用开发,钱 能723975921,Java Applet 概述,什么是Java Applet Applet的基本用法,本章要点,掌握Java Applet程序的基本形式、生命周期、Applet标记熟练掌握Java Applet程序的设计方法和运行环境,1 什么是Java Applet,首先我们来看一个一个最简单的Java Applet 例 1 HelloApplet.java先编译生成HelloApplet.class文件,然后建立一个网页文件HelloApplet.html,如下:我的第一个JavaApplet程序 这里将显示一个applet小程序,将该html文件放在与cla
2、ss文件相同的目录下,用支持Java的浏览器如IE或Netscape打开,续2,也可以使用Java的小程序查看器appletviewer来测试。在DOS窗口,进入该html文件所在的目录,键入如下命令:appletviewer HelloApplet.html,例,1.2 Java Applet的运行方式,1运行方式,2标记,标记是HTML标记的一种扩展,用于将小程序放置到Web页中,并控制其相对于Web页其他部分的显示效果。archive:小程序运行所需的jar文件。code:小程序的主类文件名。codebase:相对于class文件的相对地址或绝对URL地址,“.”表明class文件与HT
3、ML文件位于相同的文件夹中。name:Applet内部通信参数的名称,可以显示在浏览器的状态栏。,width:小程序窗口的宽度。height:小程序窗口的高度。hspace:小程序同周围文本之间的水平间距(单位为像素)。vspace:小程序同周围文本之间的垂直间距(单位为像素)。align:小程序相对于Web页其他部分的对齐方式,有以下八种取值:Left、Right、TextTop、Top、AbsMiddle、Middle、BaseLine、AbsBottom。param:Applet运行所需的参数。,例 2 标记块和之内的参数和属性设置。,Example Applet This progra
4、m requires a Java-enabled browser,if not,the Applet cannot be viewed.,2 Applet的基本用法,1类Applet java.Applet包包括一个类和三个接口:类Applet和接口AppletContext、AppletStub、AudioClip。Applet类的层次结构如下:+-java.awt.Panel+-java.applet.Applet,2成员函数介绍,public void init()方法:创建Applet时执行,只执行一次。当小应用程序第一次被支持Java的浏览器加载时,便执行该方法。在小应用程序的生命
5、周期中,只执行一次该方法,因此可以在其中进行一些只执行一次的初始化操作,如处理由浏览器传递进来的参数、添加用户接口组件、加载图像和声音文件等。小应用程序有默认的构造方法,但它习惯于在init()方法中执行所有的初始化,而不是在默认的构造方法内。,public void start()方法:多次执行,当浏览器从图标恢复成窗口,或者是返回该主页时执行。系统在调用完init()方法之后,将自动调用start()方法。而且每当浏览器从图标恢复为窗口时,或者用户离开包含该小应用程序的主页后又再返回时,系统都会再执行一遍start()方法。start()方法在小应用程序的生命周期中被调用多次,以启动小应用
6、程序的执行,这一点与init()方法不同。该方法是小应用程序的主体,在其中可以执行一些需要重复执行的任务或者重新激活一个线程,例如开始动画或播放声音等。,public void stop()方法:多次执行,当浏览器变成图标时,或者是离开主页时执行,主要功能是停止一些耗用系统资源的工作。与start()相反,当用户离开小应用程序所在页面或浏览器变成图标时,会自动调用stop()方法。因此,该方法在生命周期中也被多次调用。这样使得可以在用户并不注意小应用程序的时候,停止一些耗用系统资源的工作(如中断一个线程),以免影响系统的运行速度,且并不需要去人为地去调用该方法。如果你的小应用程序中不包含动画、
7、声音等程序,通常也不必重载该方法。,public void destroy()方法:用来释放资源,在stop()之后执行。浏览器正常关闭时,Java自动调用这个方法。destroy()方法用于回收任何一个与系统无关的内存资源。当然,如果这个小应用程序仍然处于活动状态,Java会在调用destroy()之前,调用stop()方法。,public void paint(Graphics g)方法:使用Graphics类的对象g向Applet显示区域上绘制文字、图形、图像等。它也是在小程序运行时自动调用的。当浏览器窗口大小发生变化或移动浏览器窗口时最小化、最大化浏览器窗口时有其他的窗口挡住Apple
8、t画布时Applet其他方法调用repaint()方法时,public void update(Graphics g)方法:清除Applet显示区域上的内容。Public void repaint()方法:用于重绘Applet面板,它先调用update()方法清除内容后调用paint()绘制图形。URL getCodeBase()方法:返回当前applet的.class文件的URL地址。void play(URL url)方法:根据参数提供的URL地址播放声音片断。AudioClip getAudioClip(URL url)方法:返回指定URL地址(绝对地址)所提供的AudioClip对象。
9、,2.2 Applet方法与生命周期,在一个Applet的生命周期中,共有4种状态和4个方法:init()、start()、stop()和destroy()。,加载,初始化,离开浏览器窗口,回到浏览器窗口,关闭浏览器,Applet的生命周期中有四个状态:初始态、运行态、停止态和消亡态。当程序执行完init()方法以后,Applet程序就进入了初始态;然后马上执行start()方法,Applet程序进入运行态;当Applet程序所在的浏览器图标化或者是转入其它页面时,该Applet程序马上执行stop()方法,Applet程序进入停止态;在停止态中,如果浏览器又重新装载该Applet程序所在的页
10、面,或者是浏览器从图标中复原,则Applet程序马上调用start()方法,进入运行态;当然,在停止态时,如果浏览器关闭,则Applet程序调用destroy()方法,进入消亡态。,周期中init()、start()、stop()、destroy()方法的执行时间。import java.awt.*;import java.applet.*;public class AppletLifeCycle extends Applet String status=;/成员变量 public void init()/创建时调用此方法status+=Call init()-;public void sta
11、rt()/启动时调用此方法status+=Call start()-;public void stop()/停止时调用此方法status+=Call stop()-;public void destroy()/退出时调用此方法 status+=Call destory()-;public void paint(Graphics g)/被repaint()调用的方法 g.drawString(status,20,40);/绘制字符串,例3 用输出相应字符串的方法,指示出Applet生命,我的第一个JavaApplet程序 这里将显示一个applet小程序,例3程序运行结果如图所示,3 Java
12、Applet中播放声音,用Java可以编写播放.au、.aiff、.wav、.midi、.rfm格式的音频。au格式是Java早期唯一支持的音频格式。要 在Java Applet中播放声音,可以使用Applet的一个静态的方法(类方法):newAudioClip(URL url,String name)或Applet类的实例方法:getAudioClip(Url url,String name)根据参数url提供的地址,以及该处的声音文件name,可以获得一个用于播放的音频对象(AudioClip类型对象)。,3 Java Applet中播放声音,这个音频对象可以使用下列方法来处理声音文件。p
13、lay()播放声音文件 name。loop()循环播放name。stop()停止播放name。例子3,4 Applet的参数存取,包含小程序的HTML文件中,使用放置于和之间的标记来指出每个参数。该标记有两个用于指定参数名称和值的属性:name和value。如:This is a java applet game.,小程序被装载时,参数将被传递给小程序。在小程序的init()方法中,可以使用方法getParameter()来获得这些参数的值,所有的参数值都作为字符串被返回。如:String fontName=getParameter(font);String background=getPar
14、ameter(color);String fontSize=getParameter(size);,把HTML文件中设置的两组数据(“Yaoming”,30)和(“Shark”,40)传递给Applet,并在Applet界面中显示。HTML文件设计如下:Applet Parameter Setting,例20.4,import java.awt.*;import java.applet.*;public class AppletParameters extends Applet String score1,score2;String message1,message2;int s1,s2;pu
15、blic void init()/启动浏览器时调用 score1=getParameter(Yaoming);/取得参数Yaoming的数值 score2=getParameter(Shark);/取得参数Shark的数值 s1=Integer.parseInt(score1);/将字符串score1转换成整数 s2=Integer.parseInt(score2);/将字符串score2转换成整数 message1=Yaoming scores is:+score1;/构造字符串message message2=Shark scores is:+score2;/构造字符串message pu
16、blic void paint(Graphics g)g.drawString(message1,20,40);/在(20,40)位置绘制message1 g.drawString(message2,20,55);/在(20,55)位置绘制message2 g.fillRect(150,35,s1,10);/在(150,35)位置绘制宽为s1、高为10的实心矩形 g.fillRect(150,50,s2,10);/在(150,50)位置绘制宽为s2、高为10的实心矩形,Java Applet程序AppletParameter.java设计如下:,例 4程序运行结果如图所示,练习,使用Apple
17、t类编写程序,在画布(10,20)的位置输出“我爱您,中国!”。使用Applet编写程序,要求接受HTML文件传递的参数x和y,在(x,y)的位置输出字符串“Applet与HTML参数传递”。,import java.applet.*;import java.awt.*;public class HelloApplet extends Applet public void paint(Graphics screen)screen.setColor(Color.red);screen.drawString(“我爱您,中国!,10,20);,Applet Parameter Setting,imp
18、ort java.awt.*;import java.applet.*;Public class A extends Applet String message1;int s1,s2;public void init()s1=Integer.parseInt(getParameter(“x”);s2=Integer.parseInt(getParameter(“y”);message1=“Applet与HTML参数传递”;public void paint(Graphics g)g.drawString(message1,s1,s2);,任务一:基于applet的日历,将日历转换成小应用程序在
19、主类中声明所有组件在init()方法中完成所有组件的创建在start()方法中完成布局及所有组件的加载重写事件处理的抽象方法将主类字节码文件嵌入html文件中,执行applet,任务二:基于applet的简单计算器,要求每个小组完成计算器运算过程的分析第一步:点击数字按钮应该做什么?如果点击的运算符按钮又该做什么?第二步:点击数字按钮该做什么,点击运算符按钮又该做什么?要求每个小组,下节上课时交描述文档完成界面设计完成按钮功能实现上个项目做好的小组,本周内以小组名命名将文档传到我的QQ邮箱里面。,JAVA Applet应用,教学目标1.学会编写Applet多媒体程序 2.掌握Graphic类的
20、使用 重点 1.Java Applet多媒体程序的设计方法 2.在Java中绘图的一般方法 难点多媒体程序的设计方法,教学内容,在Applet中显示图像 Graphics类的使用,1 Java Applet中绘制图像,图像是矩形内的一组像素。需要指出的是,Java支持两种主要的图像格式:GIF(Graphics Interchang Format)、JPEG(Join Phtographic Expert Group)。Applet类提供了一个重要的方法:public Image getImage(URL url,String name)这个方法返回可以被显示在屏幕上的Image对象的引用,即
21、将URL地址中,文件名为name的文件加载的内存,并返回该内存的首地址。,有时我们想加载Java Applet程序所在的服务器上的图像,那就必须要提供图像文件所在的URL的目录,例如:运行Java Applet的URL所指的目录是:。如果Java Applet准备显示java目录中的图像,可以让Java Applet调用从Applet继承的方法:public URL getCodeBase(),该方法返回一个URL对象,该对象包含Java Applet 所在的目录,例如,返回的URL对象含有的信息:。,Applet还有一个类似的方法:public URL getDocumentBase(),该
22、方法返回一个URL对象,该对象是嵌入Java Applet的网页的URL,例如,返回的URL对象含有的信息:学会使用下面的最基本的drawImage()方法,您可以很容易地使用另外的几个方法。,public boolean drawImage(Image img,int x,int y,ImageObserver observer):参数img是被绘制的Image对象;x,y是要绘制指定图像的矩形的左上角所处的位置,observer是加载图像时的图像观察器。由于Applet类已经实现了ImageObserver接口,因此它可以作为加载图像时的图像观察器。将this作为最后一个参数传递给draw
23、Image()便可将Applet对象传递过去,如:,public void paint(Graphics g)g.drawImage(img,0,3,this);,当我们使用drawImage(Image img,int x,int y,ImageObserver observer)来绘制图像时,如果Java Applet的宽或高设计的不合理,可能就会出现图像的某些部分未能绘制到Java Applet中为了克服这个缺点,可以使用drawImage()的另一个方法:public boolean drawImage(Image img,int x,int y,int width,int heigh
24、t,ImageObserver observer)在矩形内绘制加载的图像。参数img是被绘制的Image 对象;x,y是要绘制指定图像的矩形的左上角所处的位置,width和height指定矩形的宽和高,observer是加载图像时的图像观察器。,使用该方法时,不管原始图像的高和宽是多少,该图像会自动按比例调整自身大小以便适应目标区域的尺寸。如果你不想让图像有比例上的变化,在绘制之前可以 通过 Image类提供的方法获取被加载的图像的宽和高。如:img.getHeight(this);img.getWidth(this);这两个方法的参数是实现ImageObserver接口类创建的对象,Java
25、 所有组件已经实现了该接口,因此任何一个组件都可以作为图象观察器。下面的例子8绘制了两幅图像。,8 Java Applet 播放幻灯片和动画,HTML也可以将图片贴到网页上去,但在HTML中想播 放幻灯片确实是一件不现实的事情,因为为了看幻灯片必须在多个网页间切换,这是件痛苦的事情。在下 面这个Java Applet中,用户只需单击“next”按钮和“previous”按钮就可以前后变换幻灯片。例子9 下面是用本章的知识和多线程编写的一个动画程序。动画是一种错觉,运动的错觉是通过快速显示一组图片造成的,而这些图片在内容上只有微小的变化。在下面的例子10中我们使用了多线程技术,单击“startP
26、lay”按钮开始播放,单击“stopPlay”按钮暂停播放,单击“continuePlay”继续播放。,小结,Image对象的声明Image img1,img2;对象的加载img1=getImage(getCodeBase(),”qn.jpg”);Image对象的绘制g.drawImage(img1,0,0,400,300,this);,Graphics类的使用,paint()方法 从类(所有窗口对象的基类)继承的类提供了一个名为paint()的方法,在需要重新绘制组件时,可调用该方法。paint()方法只有一个参数,该参数是Graphics类的实例。如果在某个继承了Component的类中覆
27、盖了该方法,那么就可以使用该方法来控制在控制区域着何种颜色。,例2:设置背景色import java.awt.*;import java.applet.*;public class G1 extends Appletpublic void paint(Graphics g)Rectangle rect=g.getClipBounds();g.setColor(Color.blue);g.fillRect(rect.x,rect.y,rect.width,rect.height);程序运行结果如右图所示。,常用绘图类,java.awt中提供了一系列的类用于绘制图形。其中,Color类包含了编辑颜
28、色的方法和常量;Font类包含了编辑字体的方法和常量;FontMetrics类包含了获取字体信息的方法;Polygon类包含了创建多边形的方法;Toolkit类提供了从系统获得图形信息的方法,例如可显示的字体集和屏幕分辨率等等;Graphics类包含了绘制字符串、线条以及各种几何图形的方法。Graphics是一个抽象类,其作用是定义一个真正的工具,用来接受图形操作。在该类中,有47个公用方法,可以用作显示图像和文本、绘制和填充形状、剪贴图像操作等等。,1 绘制字符串、字符和字节,用于绘制字符串、字符和字节的方法分别为public abstract void drawString(String
29、string,int x,int y)在坐标(x,y)处以当前字体和颜色绘制指定的字符串string。public void drawChars(char chars,int offset,int number,int x,int y)在坐标(x,y)处以当前字体和颜色绘制指定的一系列字符。chars为要绘制的字符组,offset为位置的坐标,number为要绘制的元素个数。public void drawBytes(byte bytes,int offset,int number,int x,int y)在坐标(x,y)处以当前字体和颜色绘制指定的一系列字节。bytes为要绘制的字节数组,o
30、ffset为位置的坐标,number为要绘制的元素个数。,import java.awt.*;import java.applet.*;public class G2 extends Applet public void paint(Graphics g)String s=Using drawString!;char c=c,h,a,r,s,8;byte b=b,y,t,e,1,2,3;g.drawString(s,100,40);g.drawChars(c,0,7,100,65);g.drawBytes(b,0,5,100,90);,2 颜色控制,Color类定义了颜色常量和方法。每种颜色都
31、是从RGB(红/绿/蓝)值创建出来的。一个RGB值有三部分,都是从0255的整数值,分别代表着三种颜色的含量。因此,实际上我们可以使用256256256种颜色,即224种颜色。这就是我们常说的24位真彩色。但不是任何计算机都可以显示所有的颜色,就目前来说,大部分计算机都可以显示24位甚至超过24位的彩色。显然,我们很难记住一种颜色的RGB值,因而,Color类将一些最常用的颜色预定义为常量以方便我们使用。表10.1列出了预定义的颜色常量。,Color类中常用的方法,public Color(int r,int g,int b):创建指定RGB值的颜色。public int getRed():返
32、回红色含量的值。public int getBlue():返回蓝色含量的值。public int getGreen():返回绿色含量的值。Graphics类与Color类相关的常用方法有:public abstact Color getColor():返回图形上下文的当前颜色。public abstract void setColor(Color c):设置图形上下文的当前颜色。,import java.awt.*;public class ShowColor extends Frameint red,green,blue;public static void main(String args
33、)ShowColor frame=new ShowColor();frame.setSize(300,100);frame.setVisible(true);public ShowColor()red=200;green=100;blue=0;public void paint(Graphics g)g.setColor(new Color(red,green,blue);g.drawString(Draw color string.,50,40);Color color=g.getColor();g.drawString(Red:+color.getRed(),10,70);g.drawSt
34、ring(Green:+color.getGreen(),100,70);g.drawString(Blue:+color.getBlue(),200,70);,3 绘制几何图形,Graphics类中用于绘制几何图形的方法如下:public abstract void drawLine(int x1,int y1,int x2,int y2)在点(x1,y1)和(x2,y2)之间用当前颜色绘制线段。public void drawRect(int x,int y,int width,int height)以点(x,y)为左上角坐标,width和height为宽度和高度,用当前颜色画矩形。pub
35、lic abstact void fillRect(int x,int y,int width,int height)以点(x,y)为左上角坐标,width和height为宽度和高度,用当前颜色画一个实心的矩形。,public abstact void clearRect(int x,int y,int width,int height)以点(x,y)为左上角坐标,width和height为宽度和高度,用当前背景颜色画一个实心的矩形。此方法用于清除某个矩形显示区域。public abstact void drawRoundRect(int x,int y,int width,int heigh
36、t,int arcWidth,int arcHeight)以点(x,y)为左上角坐标,width和height为宽度和高度,用当前颜色画圆角矩形。,public abstact void fillRoundRect(int x,int y,int width,int height,int arcWidth,int arcHeight)以点(x,y)为左上角坐标,width和height为宽度和高度,用当前颜色画一个实心的圆角矩形。public void draw3Drect(int x,int y,int width,int height,boolean b)用指定的width和height,
37、以当前颜色画一个三维矩形。矩形的左上角坐标为(x,y)。当b为true时,矩形为凸的;b为false时,矩形为凹的。,public void fill3Drect(int x,int y,int width,int height,boolean b)用指定的width和height,以当前颜色画一个填充的三维矩形。矩形的左上角坐标为(x,y)。当b为true时,矩形为凸的;b为false时,矩形为凹的。public abstract void drawOval(int x,int y,int width,int height)用指定的width和height,以当前颜色画椭圆。外切矩形的左上角
38、坐标为(x,y)。public abstract void fillOval(int x,int y,int width,int height)用指定的width和height,以当前颜色画实心椭圆。外切矩形的左上角坐标为(x,y)。,public abstract void drawArc(int x,int y,int width,int height,int startAngle,int arcAngle)参考外切矩形的左上角坐标(x,y),用指定的width和height,以当前颜色绘制一段弧。弧段从起始角startAngle开始一直到张角arcAngle。public abstrac
39、t void fillArc(int x,int y,int width,int height,int startAngle,int arcAngle)参考外切矩形的左上角坐标(x,y),用指定的width和height,以当前颜色绘制一段实心的弧。弧段从起始角startAngle开始一直到张角arcAngle。,public abstract void drawPolygon(int xPoints,int yPoints,int points)以当前颜色画一个具有points个顶点的多边形。xPoint和yPoint数组分别指定了每个顶点的x和y坐标。public void drawPolygon(Polygon p)以当前颜色画指定的多边形。public abstract void fillPolygon(int xPoints,int,yPoints,int points)以当前颜色画一个具有points个顶点的填充多边形。xPoint和yPoint数组分别指定了每个顶点的x和y坐标。举例,实验11 拼图游戏分析与规划,实验12 图片的加载与背景音乐设计,实验13 图片分割的设计与实现,实验14 图片移动的实现,实验15 判断成功的实现,实验16 计分与排名的实现,实验17 项目完善与文档撰写,
链接地址:https://www.31ppt.com/p-6501571.html