




已阅读5页,还剩50页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章JavaApplet及应用,4.4Applet应用,4.3Applet程序与HTML文件,4.2Applet与Applet类,4.1Applet概述,4.1Applet概述,1、JavaApplet的基本概念Java小应用程序(JavaApplet)是使用Java语言编写的一段代码,Applet是一种为通过Web浏览器在Internet上工作而设计的Java程序。它能够在浏览器环境中运行。并由支持Java的Web浏览器来解释执行。,2、一个Applet小程序的例子,importjava.applet.Applet;importjava.awt.Graphics;publicclassExam4_1extendsAppletStringstr;publicvoidinit()str=“HereisanApplet”;publicvoidpaint(Graphicsg)g.drawString(str,100,100);,4.1Applet概述,超文本标记语言(HTML)WWW浏览器Applet小程序嵌入在/写入在HTML文件中从WWW服务器下载到本地WWW浏览器由WWW浏览器中的Java解释器来运行,4.1Applet概述,5,实现过程Applet小程序编写,编译,得到字节码文件javacExam4_1.java嵌入到HTML文件中,保存为Exam4_1.html,4.1Applet概述,3.Applet的主要作用:形成动态可交换式的网页,并可利用浏览器中所提供的图形功能显示及处理图像、处理用户界面、网络通讯、用户事件处理、访问后台数据库等功能。在Java出现之前,人们就已经开始使用HTML(超文本标记语言)进行Web页面的设计了。然而,对HTML稍有了解的人都知道,HTML所提供的设计能力是极其有限的。Java率先提供了让Web页面实现更丰富的GUI和逻辑运算能力的方法,这种方法是通过将一个Java的类插入到Web页面中来实现的。,4.1Applet概述,下载html文件,WWW服务器,WWW服务器,WWW服务器,html文件Applet嵌入Applet标记名,解释执行Applet字节码,请求html文件,下载Applet字节码,请求Applet字节码,4.Applet的工作原理,4.1Applet概述,Applet类继承了Panel类,是一个容器,在Applet程序开发中多使用JApplet类,它是JavaSwing中的成员,继承了Applet类,JApplet类的继承关系如下图所示。,4.2Applet与Applet类,1、Applet类层次,2、Applet生命周期,Applet的加载、执行、卸载不同于一般的Java应用程序,其内的主要成员方法分别对应于Applet生命周期的不同阶段的活动,对于每个事件将自动调用一种方法。方法如下:,init()方法,start()方法,stop()方法,destroy()方法,4.2Applet与Applet类,Applet生命周期,4.2Applet与Applet类,(1)init()方法Applet程序的初始化阶段会调用该方法,实现程序初始化。,1)执行时机:当Applet程序初始下载时浏览器首先执行它2)特点:只被调用一次。3)用途:用户重定义出它,从而达到创建出其他对象、初始状态设置、图像加载及外观特征参数的改变等。,3、Applet类中的主要成员方法,4.2Applet与Applet类,(2)start()方法1)执行时机:它是在Applet的init()函数调用之后被浏览器调用;用户又切换回到本Applet页面;浏览器从图标状态恢复为窗口时被调用。2)特点:可能被多次执行(而且都是在页面可见时被调用)。3)用途:用户重定义出它,在其内创建并启动线程以实现特定的功能。,4.2Applet与Applet类,(3)stop()方法它与start()交替执行。1)执行时机:当用户退出浏览器时被浏览器调用;当用户离开Applet所在的页面;浏览器变为图标状态时。2)特点:可能被多次执行(而且都是在页面不可见时被调用)。3)用途:用户重定义出它,在其内终止线程以终止特定的功能。,4.2Applet与Applet类,(4)paint(Graphicsg)方法它用于在浏览器的客户区(GUI)中显示出文本、图像等。1)特点:可多次被调用,并且可由AWT的绘制处理线程自动调用(启动后/窗口改变/repaint()调用)。2)用途:用户重定义出它,以显示出Applet面板区域内各个组件及外观特征和显示出文本、图像、图形等。3)定义的形式:publicvoidpaint(Graphicsg)/显示出Applet面板区域内各组件外观调用Graphics类中的各种成员函数来实现绘制输出,用户也可调用repaint()、update()来间接地调用paint()以实现立即显示外观属性的改变。,4.2Applet与Applet类,(5)destroy()方法1)执行时机:它在Applet结束时被调用,以允许Applet做最后清理任务(离线时释放本对象及其相关的资源)2)用途:由于stop()在destroy()之前被执行,用户一般不必覆盖它,而只需覆盖stop()即可。,4.2Applet与Applet类,importjava.awt.*;importjava.applet.*;publicclassAppletClassNameextendsAppletpublicvoidinit()/初始化变量、装载图片、读取参数值等publicvoidstart()/启动线程执行或恢复线程执行publicvoidpaint(Graphicsg)/完成绘制输出信息等操作publicvoidstop()/挂起正在执行的程序,暂停程序的执行publicvoiddestroy()/终止线程,释放系统资源,3、Applet类的框架结构,4.2Applet与Applet类,publicclassSimpleAppletextendsAppletStringBufferbuffer;publicvoidinit()buffer=newStringBuffer();addItem(initializing.);publicvoidstart()addItem(starting.);publicvoidstop()addItem(stopping.);,publicvoiddestroy()addItem(preparingforunloading(destroy).);voidaddItem(StringnewWord)System.out.println(ewWord);buffer.append(newWord);repaint();publicvoidpaint(Graphicsg)g.drawRect(0,0,getSize().width-1,getSize().height-1);g.drawString(buffer.toString(),5,15);,4.2Applet与Applet类,除了Applet生命周期控制的方法外,Applet类还提供了一些其他有用的方法:,4、Applet类的其他有用的方法,publicAppletContextgetAppletContext()publicURLgetDocumentBase()publicURLgetCodeBase()publicStringgetParameter(Stringname)publicStringgetParameterInfo()/应该被重写publicvoidshowStatus(Stringmsg),4.2Applet与Applet类,1.Html中的Applet标记,4.3Applet程序与HTML文件,超文本标记语言(HTML)和Html文件开始和结束的标记和WWW浏览器窗口标题内容的标记和Html文件在浏览器窗口中显示内容的标记和嵌入到Html文件中Applet程序的标记,.alternateHTML,4.3Applet程序与HTML文件,CODEBASE=codebaseURL指明Applet类文件所在URL址,在Applet类中,方法getCodeBase()可以获取该属性。如果这个属性没有指明,那么Applet类文件必须与包含它的HTML页面在同一个地方,方法getCodeBase()返回的值与getDocumentBase()相同。CODE=appletFile指明需要运行的Applet类文件(.class文件),该文件是与codebaseURL相关的。NAME=appletInstanceName给出了Applet类运行时的实例名,这使得同处于一个页面的不同Applet之间能够相互通信。方法getAppletContext()可以得到同一个方页面中其它Applet类。,4.3Applet程序与HTML文件,ALT=alternateText如果浏览器支持Applet但不能运行它,就显示alternateText中所给出的文字。否则就忽略它。WIDTH=pixelsHEIGHT=pixelsApplet在浏览器中所显示的高度和宽度(以象素为单位)。ALIGN=alignmentApplet在浏览器中显示时的对齐方式,其含义与效果与图片在HTML中的一样。其取值有:left,right,top,texttop,middle,absmiddle,baseline,bottom,absbottom。VSPACE=pixelsHSPACE=pixelsApplet在浏览器中显示时上下、左右要预留的高度和宽度,其含义与效果与图片在HTML中的一样。,4.3Applet程序与HTML文件,属性可以使得Applet能够从页面中获取所需的参数。方法getParameter()获取属性指定的参数。属性的作用与应用程序中main()方法里参数Stringargs的作用是一样的。一个好的小应用程序,应该提供用户能够设置外部参数的功能,以使得用户能够根据自己的需要来应用它。方法getParameterInfo()可以得到有关属性的说明信息。alternateHTML如果浏览器不支持Applet,就解释alternateHTML所给出的HTML代码。否则就忽略它。,4.3Applet程序与HTML文件,publicclassAppletParaextendsAppletStrings1,s2;publicvoidinit()s1=getParameter(p1);s2=getParameter(p2);publicvoidpaint(Graphicsg)g.drawString(s1,10,10);g.drawString(s2,10,30);,AppletParameterTest,4.3Applet程序与HTML文件,importjava.applet.Applet;importjava.awt.*;publicclassExam4_3extendsAppletStringstr;intx,y,h;Fontfnt;publicvoidinit()str=getParameter(“string”);h=Integer.parseInt(getParameter(“size”);x=Integer.parseInt(getParameter(“x1”);y=Integer.parseInt(getParameter(“y1”);fnt=newFont(“TimesRoman”,Font.BOLD,h);publicvoidpaint(Graphicsg)g.setColor(Color.red);g.setFont(fnt);g.drawString(str,x,y);,4.3Applet程序与HTML文件,4.3Applet程序与HTML文件,Applet程序中可使用java.awt包中的Graphics类提供的各种方法,在Applet程序中输出文本、绘制多种图形和显示图片等。Graphics类对象代表当前当前组件的绘图环境。,4.4Applet应用,1、输出文本,(1)绘制字符串publicvoiddrawString(Strings,intx,inty)(2)绘制字符publicvoiddrawString(charc,intoffset,intnumberintx,inty)(3)绘制字节publicvoiddrawString(byteb,intoffset,intnumberintx,inty),4.4Applet应用,(1)设置字体java.awt.Font类设置文本的字体(包括字型和字号)构造方法publicFont(Stringname,intstyleintsize),2、设置字体和颜色,编程方法:利用Font类创建出一Font类对象并设置字体特性参数;调用Graphics类中的setFont()将用户字体加入到系统中;再调用绘制函数输出文字。,4.4Applet应用,publicvoidpaint(Graphicsg)FontmyFont=newFont(“Dialog”,Font.BOLD,20);g.setFont(myFont);g.drawString(“这是Java中的Dialog字体的文字串”,100,100);,(2)设置字体的尺寸:java.awt.FontMetrics类;获知字符或字符串的宽度和高度。获取文字字体的尺寸方法:FontMetricsfm=g.getFontMetrics();fm.getHeight();,4.4Applet应用,(3)设置颜色可用java.awt.Color类类设置或获取某一容器组件内的图形、文字的颜色。Color类已包含13个颜色常量常用构造方法publicColor(intr,intg,intb)publicColor(floatr1,floatg1,floatb1),2、设置字体和颜色,编程方法:利用Color类创建出一Color类对象并设置颜色特性参数(三基色的分量);调用Graphics类中的setColor()将用户的颜色加入到系统中;再调用绘制函数输出图形、文字等。,4.4Applet应用,publicvoidpaint(Graphicsg)ColormyColor=newColor(red,green,blue);g.setColor(myColor);g.drawString(“这是Java中的带颜色的文字串,100,100);,要点:对Java的组件也可借助于以下函数来改变或获取组件的前景和背景色。setBackground()/setForeground()(设置前景和背景色)getBackground()/getForeground()(获取前景和背景色),importjava.applet.Applet;importjava.awt.*;publicclassExam4_4extendsAppletpublicvoidpaint(Graphicsg)Fontfont1,font2,font3;font1=newFont(“Serif”,Font.BOLD,20);font2=newFont(“Monospaced”,Font.BOLD+Font.ITALIC,24);font3=newFont(“SansSerif”,Font.PLAIN,16);g.setFont(font1);g.drawString(“Serif20pointBOLD”,30,20);g.setFont(font2);g.drawString(“Monospaced24pointBOLD+ITALIC”,30,80);g.setFont(font3);g.drawString(“SansSerif16pointPLAIN”,30,50);intsize=font2.getSize();intstyle=font1.getStyle();Stringname=font2.getName();Stringstr=name+“+style+“+size;g.drawString(str,30,110);,4.4Applet应用,importjava.applet.Applet;importjava.awt.*;publicclassExam4_6extendsAppletFontfont1=newFont(“TimesRoman”,Font.ITALIC,25);Fontfont2=newFont(“Braggadcoio”,Font.BOLD,40);publicvoidpaint(Graphicsg)Stringstr=“IloveBeijing!”;Colormycolor=newColor(192,64,200);g.setFont(font1);g.setColor(mycolor);g.drawString(str,30,40);Colordarker=mycolor.darker();g.setColor(darker);g.drawString(str,50,80);Colorbrighter=mycolor.brighter();g.setColor(brighter);g.drawString(str,70,120);g.setFont(font2);g.setColor(Color.red);g.drawString(str,30,170);g.setColor(Color.white);g.drawString(str,32,169);,4.4Applet应用,4.4Applet应用,3、绘制几何图形,画直线voiddrawLine(intx1,inty1,intx2,inty2)画矩形voiddrawRect(intx,inty,intwidth,intheight)voidfillRect(intx,inty,intwidth,intheight)voidclearRect(intx,inty,intwidth,intheight)voiddrawRoundRect(intx,inty,intwidth,intheight,intarcWidth,intarcHeight)voiddraw3DRect(intx,inty,intwidth,intheight,booleanb)voidfill3DRect(intx,inty,intwidth,intheight,booleanb),4.4Applet应用,3、绘制几何图形,画圆弧和椭圆voiddrawArc(intx,inty,intwidth,intheight,intstartAngle,intarcAngle)voidfillArc(intx,inty,intwidth,intheight,intstartAngle,intarcAngle)voiddrawOval(intx,inty,intwidth,intheight)voidfillOval(intx,inty,intwidth,intheight),importjava.applet.Applet;importjava.awt.*;publicclassExam4_8extendsAppletpublicvoidpaint(Graphicsg)intx0=10,y0=20,X=150,Y=80,L,c;intarc=0,N=10;doublexy=1.0*(X-Y)/N/2;g.setColor(Color.red);g.fillRect(x0,y0,X,X);for(inti=0;i=N;i+)L=(int)(X-2*i*xy);arc=Y*i/N;c=i*240/N;g.setColor(newColor(c,c,c);g.drawRoundRect(int)(x0+i*xy),(int)(y0+i*xy),L,L,arc,arc);g.setColor(Color.blue);g.draw3DRect(200,y0,X,X,true);g.setColor(Color.green);g.fill3DRect(400,y0,Y,Y,false);,4.4Applet应用,画多边形publicvoiddrawPolygon(intxPoints,intyPoints,intPoints)publicvoidfillPolygon(intxPoints,intyPoints,intPoints)publicvoiddrawPolygon(Polygonp)publicvoidfillPolygon(Polygonp)Polygon类构造方法Polygon()Polygon(intxPoints,intyPoints,intnumberOfPoints),4.4Applet应用,(1)加载图像(定义获取图像对象)java.awt包java.awt.Image类1)JavaApplet中加载图像:直接调用:getImage(URLurl,Stringname),4.4Applet应用,3、显示图像,url:给出图片文件基本位置的绝对URL路径,name:图片文件名称,它相对于url参数的图片位置。,当前网页文件的URL路径,例如:ImagemyImage;myImage=getImage(getDocumentBase(),edonkey.jpg”);,4.4Applet应用,tryURLurl=newURL(,例如使用网站URL路径“,注意:Applet程序和将要获取的资源文件(例如图片和音频文件等)必须存放在同一个服务器中,由于Applet程序的安全限制,它不能够访问其他服务器上的文件。,4.4Applet应用,2)JavaApplication中加载图像:ImagemyImage=Toolkit.getDefaultToolkit.getImage(imageFileName);加载图像。,(2)显示图像的操作drawImage(Imageimg,intx,inty,ImageObserverobserver)drawImage(Imageimg,intx,inty,intwidth,intheight,ImageObserverobserver),4.4Applet应用,其中第四个参数可以为null(不跟踪图像载入时)或this(跟踪图像载入时,跟踪者为本程序)。,图像编程的要点:先加载图像(将它定义为Image类对象);再跟踪图像的加载过程;最后显示出图像,importjava.applet.Applet;importjava.awt.*;publicclassExam4_13extendsAppletpublicvoidpaint(Graphicsg)Imagepic;pic=getImage(getDocumentBase(),“edonkey.jpg”);intx0=10,y0=30;intw=pic.getWidth(this);inth=pic.getHeight(this);g.drawImage(pic,x0,y0,w/8,h/8,this);g.drawImage(pic,x0+150,y0,w/12,h/12,this);g.drawImage(pic,x0+150,y0+100,w/15,h/15,this);g.drawImage(pic,x0+250,y0+30,(int)(w*0.1),(int)(h*0.2),this);,4.4Applet应用,4.4Applet应用,4、动画编程,(1)动画原理:画出一系列的图像帧,利用人眼的视觉暂停来造成运动的感觉。(2)常见的动画效果及实现原理(利用线程达到循环显示输出):1)运动效果:平动-改变文字在显示时g.drawString()的x,y坐标位置或g.drawImage()中的x,y坐标位置;规则运动-如果x,y之间满足一定的数学规则。2)变焦(由远到近-文字由小到大;由近到远-文字由大到小):利用线程不断地改变文字的字体大小或图像的大小。3)淡入淡出:利用线程不断地改变文字的颜色并将颜色按某种规则变化。,4.4Applet应用,(3)动画的质量:除了图片本身的好坏外,动画中动作的平滑程度也是一大关键(每秒所播放的图像数较多,动画中动作的平滑程度则较高,1020帧/秒);动画的速度则可利用Java的线程来实现并用threadObj.sleep()来延迟以控制动画的速度。(4)动画的图像载入编程技巧:利用getImage()函数并用Image数组来存放各个Image对象,同时为利用一个for()循环来将图片全部载入,应而各个图像文件名也应有要求(一般可采用数字编码来命名文件名);注意只有在图像文件全部加载完毕以后再显示出,否则会断续显示,这可由MediaTracker类中的waitForAll()方法实现对图像载入过程的跟踪。(5)动画的载体:文字或图像,实例1:文字淡入淡出(1)原理:利用new创建一个线程,用drawString()在屏幕指定位置显示出文字,然后让线程休眠一段时间,再改变文字显示的位置或颜色,最后再显示文字(其中包括边界判断、重设坐标)。(2)编程技巧:可利用Graphics类中的clipRect()函数用于限定绘制范围,从而减少清屏的区域以避免图像闪烁。实例2:图像动画,4.4Applet应用,importjava.applet.Applet;importjava.awt.*;publicclassimg1extendsAppletImagem_Images;intsum=18;intcur=0;StringstrImage;publicvoidinit()m_Images=newImage18;for(inti=0;isum;i+)strImage=images/img00+(i10)?0:)+i+.gif;m_Imagesi=getImage(getDocumentBase(),strImage);publicvoidstart()cur=0;publicvoidpaint(Graphicsg)g.drawImage(m_Imagescur,50,50,this);cur=+cur%sum;tryThread.sleep(50);catch(InterruptedExceptione)showStatus(e.toString();repaint();,4.4Applet应用,4.4Applet应用,4、音频播放,编程要点:先加载声音文件,再播放它。编程方法:(1)在Applet程序中直接调用play()函数。play(getDocumentBase(),mySound.au”),但此方法的缺点是用户无法控制它。,Java语言除了能够处理图片资源之外,还可以获取并播放音频、视频等多媒体资源,和图像处理一样。支持的主要音频格式有AIFF、AU、MIDI、WAV、RMF等。Applet对音频资源也使用URL路径定位,所以同样需要捕获和处理URL的异常。,4.4Applet应用,(2)使用AudioClip接口提供的相关API来实现音频播放、停止和循环播放,AudioClip接口中定义了3个方法:,1)play()方法该方法将从头开始重新播放指定的音频剪辑。2)stop()方法该方法将停止当前正在播放的音频剪辑。3)loop()方法该方法将循环播放指定的音频剪辑。Applet类中提供了多个播放音频资源的方法,它们都可以获取AudioClip接口的实现,并调用该接口中定义的方法控制音频的播放与停止。,4.4Applet应用,4)getAudioClip()方法该方法可以获取URL参数指定的AudioClip对象,该对象是AudioClip接口的一个实现,当调用该对象的方法进行音频播放时,音频资源中的数据将被加载并播放。,该方法有两种重载方式。(1)第一种重载格式:url:音频资源的URL路径参数。该方法根据url参数指定的路径寻找音频资源,并返回AudioClip对象。(2)第二种重载格式为:url:音频资源的URL参考路径。name:音频文件名称,它相对于url参数的音频剪辑位置。,getAudioClip(URLurl),getAudioClip(URLurl,Stringname),play()方法,该方法可以播放指定绝对URL路径的音频剪辑。如果未找到音频剪辑,则没有任何效果。使用该方法只能播放音频,因为它没有返回AudioClip对象,所以无法实现停止音频播放。该方法同样有两种重载方式。(1)第一种重载的语法格式为:url:该参数指定了音频资源的URL绝对路径。(2)第二种重载的语法格式为:url:该参数指定了音频资源的URL绝对路径。name:音频文件名称,它相对于url参数的音频剪辑位置,play(URLurl),play(URLurl,S
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川建筑职业技术学院《物联网应用3》2024-2025学年第一学期期末试卷
- Ⅲ类射线装置辐射工作人员试题库及考核规则
- 2025年初级会计师财务成本管理知识要点解析与模拟题集
- 河南牧业经济学院《网络工程导论》2024-2025学年第一学期期末试卷
- 2025年建筑项目经理高级面试题详解
- 2025年客服员招聘面试题及答案解析含语音情景模拟题
- 2025年初级营养师知识模拟考试及答案解析
- 家具基础修理知识培训内容课件
- 2025年焊接工艺面试模拟题熔化焊接技术高频考点
- 2025年人力资源管理师考试实务备考攻略
- GB/T 30758-2014耐火材料动态杨氏模量试验方法(脉冲激振法)
- DBJT13-370-2021 福建省柔性饰面砖应用技术标准
- GB/T 11538-2006精油毛细管柱气相色谱分析通用法
- 动力网站-艾默生netsure801电源系统用户手册
- DB3302T 1079-2018 管线探测技术规程
- 大唐集团公司工作票、操作票使用和管理标准(版)
- 医学皮肤部年度业务报告课件
- 21年一消防工程师继续教育题
- 太阳能热水系统问题与解决方案
- (完整版)物理化学上教案
- D型便梁工法(二)
评论
0/150
提交评论