




已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Chapter19,网页的向导-Applet,applet经编译后,会产生.class的文件。把.class的文件嵌在html的网页中,只要用户连到一个网页里,applet便会随着网页下载到用户的计算机运行,Java的程序可分为Javaapplication与Javaapplet两种。本章将介绍Javaapplet的编写与它的运行方式。,Applet类的继承关系:,01/App19_2,简单的applet程序02importjava.awt.*;03importjava.applet.Applet;0405publicclassApp19_2extendsApplet06publicvoidpaint(Graphicsg)0708g.drawString(HelloJava,30,50);/在绘图区内写上字符串0910,引入Applet包,准备一个HTML文件App19_2.htm,并将它放在与App19_2.class同一个文件夹内。,01020304111213,设置applet靠右对齐,设置applet与其他组件的垂直距离为20,用浏览器来观看applet的运行结果,用appletviewer查看运行的结果,传递参数给appletapplet可通过HTML使用参数,从含有标签的HTML文件中获得不同的输入。从HTML中合理地使用参数,既可以控制对applet的执行,也可以增加applet的灵活性,不致于因简单的修改而对整个java源程序重新编译。为了在一个applet中建立和处理参数,必须:1、在HTML文件中设置一个特殊的参数标志;,2、在applet中从语法上分析这些参数的代码。在包含嵌入applet的HTML文件中使用标签表示每个参数,标签具有名字和值两个属性,其分别称为NAME和VALUE。一、形式:在HTML文件中:,在applet文件中,可以在init()方法中用getParameter(“myPara”)方法获得这些参数。getParameter()方法的语法:String保存参数值的变量=getParameter(“参数名”);getParameter()方法有一个参数,返回包含对应该参数值的一个字符串。例如:StringtheFontName=getParameter(“font”);,二、注意1、作为在中指定的参数名,和在getParameter()的参数名必须完全匹配;2、如果用户没有在HTML文件中指定所需的参数,getParameter()就返回null。用户层次需要测试一个null参数,并提供一个适当的缺省。例如:if(theFontName=null)theFontName=”Courier”;,三、例子importjava.awt.*;importjava.applet.*;publicclassAppletofParamextendsAppletprivateStringparamName;/保存返回对应参数值的字符串publicvoidinit()paramName=getParameter(“who”);if(paramName=null)paramName=”world”;publicvoidpaint(Graphicsg)super.paint(g);g.drawString(“Hello”+paramName+“!”,50,50);,程序对应的HTML文件:ThisistheexampleofParametrtransfer,请注意applet文件和HTML文件中红色的对应paramName=getParameter(“who”);,三、例子importjava.awt.*;importjava.applet.*;publicclassAppletofParamextendsAppletprivateStringparamName;/paramName用来保存返回对应参数值的字符串publicvoidinit()paramName=getParameter(“who”);,01/App19_3,简单的applet程序02importjava.awt.*;03importjava.applet.Applet;0405publicclassApp19_3extendsApplet06publicvoidpaint(Graphicsg)0708g.drawString(getParameter(str1),30,40);/取得html里的str1串09g.drawString(getParameter(str2),30,60);/取得html里的str2串0910111213,直接通过函数获得HTML中的参数,0910,08g.drawString(getParameter(str1),30,40);/取得html里的str1字符串09g.drawString(getParameter(str2),30,60);/取得html里的str2字符串,显示效果,Applet的运行程序当屏幕需要更新以显示新的内容,窗口通过制作必须更新的区域(矩形)来处理,然后画出显示的结果。由update()和paint()方法完成。update()方法:取Graphics类对象作为参数。当applet区域需要重画时,Windows系统开始画画过程。调用update()方法清除屏幕再调用paint()方法,屏幕然后由系统更新。,paint()方法:取Graphics类对象作参数,在绘画区画applet的图象。方法被第一次自动激活时,applet显示在屏幕上而且每次applet收到焦点,由调用repaint()方法而触发paint()方法。repaint()方法:当想要重画applet的区域时调用该方法。repaint()方法是调用update()方法发出applet需要更新的信号。update()方法的缺省操作是清除applet区域和调用paint()方法,如果不想清除applet区域可以抑制update()方法。,例子:importjava.applet.*;importjava.awt.*;publicclassAppletMethodsextendsAppletintinitCounter=0;intstartCounter=0;intstopCounter=0;intdestroyCounter=0;publicvoidinit()initCounter+;repaint();publicvoidstart()startCounter+;repaint();publicvoidstop()stopCounter+;repaint();,publicvoiddestroy()destroyCounter+;repaint();publicvoidpaint(Graphicsg)g.drawString(inithasbeeninvoked“+String.valueOf(initCounter)+times,20,20);g.drawString(starthasbeeninvoked“+String.valueOf(startCounter)+times,20,35);g.drawString(stophasbeeninvoked“+String.valueOf(stopCounter)+times,20,50);g.drawString(destroyhasbeeninvoked“+String.valueOf(destroyCounter)+times,20,65);,加入AWT组件到applet里,创建组件的对象将创建好的对象加入到Applet窗口里若要实现组件的功能,还需为其添加监视器和写相应的代码,/例:加入AWT组件到applet里08Buttonbtn;/声明Button类型的变量btn09publicvoidinit()1011btn=newButton(Start);/创建btn对象12btn.addActionListener(this);/applet本身作btn的聆听者13add(btn);/将btn按钮加入applet窗口里14,15publicvoidactionPerformed(ActionEvente)1617if(btn.getLabel()=Start)18btn.setLabel(Stop);/设置按钮上方的文字为Stop19else20btn.setLabel(Start);/设置按钮上方的文字为Start21,实现接口中的方法,以使得控件能够响应用户事件,以上代码以实现程序所要求的该控件的功能,加载与显示影像,声明Image类型的变量利用getImage()加载图片利用drawImage()绘出图片,在applet里除了可以绘制图形外,也可以加载图片(即影像)。加载与显示图片的操作相当简单,只要下列三个操作就可以了:,/例:/以下只给出三个主要操作08Imageimg;/声明Image类型的变量img0910publicvoidinit()1112img=getImage(getCodeBase(),baby.jpg);/加载baby.jpg图片13/其中baby.jpg文件应该与此class文件处于相同文件夹下1415publicvoidpaint(Graphicsg)1617g.drawImage(img,20,20,this);/将img画在applet上18,App19_8.java只有短短的19行便可用来加载影像第8行声明Image类型的变量img第12行利用getImage(getCodeBase(),baby.jpg)来加载图片baby.jpg其中getCodeBase()是用来取得applet程序所在的目录因此在本例中,baby.jpg与App19_8.class必须置于同一个目录下才能运行getImage()命令编写在init()方法中,因此只要applet一运行,baby.jpg便会自动加载。,对于paint()方法,利用第17行的语句:drawImage(img,20,20,this)把img加载,并把图形的左上角置于(20,20)之处。此外,第17行的this关键字代表图片所显示的区域为目前的这个applet。如果要限定加载后,图形的宽度为w个像素,高度为h个像素,则可以把第17行改写成:g.drawImage(img,20,20,w,h,this);/限定加载图形的宽为w,高h个像素此时原图会依设置的w与h做缩放的操作。,移动影像,前一章用鼠标移动了圆形,现在利用相同的原理,也可以很容易地写出移动影像的程序代码。App19_9是利用相同的原理来移动一只加载的黄金鼠影像,如下是此例的代码:,01/App19_9,在applet里移动图片02importjava.awt.*;03importjava.awt.event.*;04importjava.applet.Applet;0506publicclassApp19_9extendsAppletimplementsMouseMotionListener,MouseListener0708Imageimg;/声明Image类型的变量img09intx=70,y=60,posX=70,posY=60,dx,dy;10,/init()方法初始化applet11publicvoidinit()1213img=getImage(getCodeBase(),mouse.gif);/加载影像14addMouseListener(this);15addMouseMotionListener(this);1617publicvoidmousePressed(MouseEvente)1819dx=e.getX()-posX;/取得按下点与基准点x方向的距离20dy=e.getY()-posY;/取得按下点与基准点y方向的距离21,/鼠标拖拽事件处理22publicvoidmouseDragged(MouseEvente)2324x=e.getX()-dx;/取得拖曳时基准点的x坐标25y=e.getY()-dy;/取得拖曳时基准点的y坐标26if(dx0/清空画面为背景颜色,再调用paint()3031,/paint()方法处理32publicvoidpaint(Graphicsg)3334g.drawImage(img,x,y,120,60,this);/将img画在applet上35posX=x;/更新基准点的x坐标36posY=y;/更新基准点的y坐标3738publicvoidmouseMoved(MouseEvente);39publicvoidmouseReleased(MouseEvente);40publicvoidmouseEntered(MouseEvente);41publicvoidmouseExited(MouseEvente);42publicvoidmouseClicked(MouseEvente);43,/调用applet的html页01020304080910,播放音乐文件,除了可以在applet的窗口内显示图片之外,也可以在applet内播放音乐!在applet内播放音乐非常的简单,只要利用java.applet类库里的AudioClip接口就可以了,AudioClip接口定义了三个简单的方法,分别为loop()、play()与stop(),其功能列表如下所示。表19-3java.applet.AudioClip的方法,01/App19_10,在applet播放音乐文件/引用需要的包注意02importjava.awt.*;03importjava.awt.event.*;04importjava.applet.Applet;05importjava.applet.AudioClip;,目前JavaJ2SE1.4版所支持的声音文件已相当的齐全,且目前的浏览器也可播放au、wav与midi等类型的文件。下面是一个用APPLET实现的播放音乐文件的例子。,06/定义类并进行必要的变量设置07publicclassApp19_10extendsAppletimplementsItemListener0809AudioClipmidi=newAudioClip3;/声明AudioClip接口类型的数组10AudioClipcurrent;/声明AudioClip接口类型的变量current1112Choicechc=newChoice();/创建Choice组件加载三个声音文件,并把它们设置给midi数组13,/INIT()方法,进行必要的初始化工作14publicvoidinit()15/加载声音文件,并把它们放入midi数组中16midi0=getAudioClip(getCodeBase(),Totoro.midi);17midi1=getAudioClip(getCodeBase(),UnderTheSea.midi);18midi2=getAudioClip(getCodeBase(),LionKing.midi);/在选择控件中添加要播放的文件名称如下19chc.add(龙猫);20chc.add(小美人鱼);21chc.add(狮子王);22add(chc);/将选择控件添加到APPLET上/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年宝鸡先行电力(集团)有限责任公司招聘(4人)模拟试卷及答案详解1套
- 2025广西南宁上林县禁毒委员会招聘禁毒社工1人考前自测高频考点模拟试题及答案详解(历年真题)
- 2025广西防城港市中小学教师招聘501人模拟试卷及答案详解(典优)
- 2025湖北省三支一扶招募高校毕业生2000人考前自测高频考点模拟试题及答案详解(必刷)
- 2025内蒙古赤峰市林西金城医院招录专业技术人员6人考前自测高频考点模拟试题及答案详解(易错题)
- 律师常用信涵样式相互同意解除合同7篇
- 库房搬迁运输合同9篇
- 科研伦理考试题库及答案
- 甘肃消防考试题库及答案
- 绿色环保与可持续发展行动计划活动方案
- 公路施工质量培训课件
- 二级公立医院绩效考核三级手术目录(2020版)
- 填料及表面处理培训课件
- 4初步设计评审报告
- 文学理论(全套课件)
- 法院民事调解协议书
- 2022年人口变动情况抽样调查表
- (完整)脑出血护理查房ppt
- 监控系统项目监理规划
- 光伏电站三级安全安全教育
- 化工总控工项目6任务28精馏操作专项训练课件
评论
0/150
提交评论