JAVAapplet应用实例.ppt

上传人:本田雅阁 文档编号:3406703 上传时间:2019-08-22 格式:PPT 页数:39 大小:812.01KB
返回 下载 相关 举报
JAVAapplet应用实例.ppt_第1页
第1页 / 共39页
JAVAapplet应用实例.ppt_第2页
第2页 / 共39页
JAVAapplet应用实例.ppt_第3页
第3页 / 共39页
JAVAapplet应用实例.ppt_第4页
第4页 / 共39页
JAVAapplet应用实例.ppt_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《JAVAapplet应用实例.ppt》由会员分享,可在线阅读,更多相关《JAVAapplet应用实例.ppt(39页珍藏版)》请在三一文库上搜索。

1、Chapter 19,网页的向导-Applet,applet经编译后,会产生.class的文件。把.class的文件嵌在html的网页中,只要用户连到一个网页里,applet便会随着网页下载到用户的计算机运行,Java的程序可分为Java application与Java applet两种。 本章将介绍Java applet的编写与它的运行方式。,Applet类的继承关系 :,01 / App19_2, 简单的applet程序 02 import java.awt.*; 03 import java.applet.Applet; 04 05 public class App19_2 exten

2、ds Applet 06 public void paint(Graphics g) 07 08 g.drawString(“Hello Java“,30,50); / 在绘图区内写上字符串 09 10 ,引入Applet包,准备一个HTML文件App19_2.htm,并将它放在与 App19_2.class同一个文件夹内。,01 02 03 04 11 12 13 ,设置applet靠右对齐,设置applet与其他组件的垂直距离为20,用浏览器来观看applet的运行结果,用appletviewer查看运行的结果,传递参数给applet applet可通过HTML使用参数,从含有标签的HTM

3、L文件中获得不同的输入。 从HTML中合理地使用参数,既可以控制对applet的执行,也可以增加applet 的灵活性,不致于因简单的修改而对整个java源程序重新编译。 为了在一个 applet中建立和处理参数,必须: 1、在HTML文件中设置一个特殊的参数标志;,2、在applet中从语法上分析这些参数的代码。 在包含嵌入applet 的HTML文件中使用 标签表示每个参数, 标签具有名字和值两个属性,其分别称为NAME和VALUE。 一、形式: 在HTML文件中: ,在applet文件中,可以在init()方法中用getParameter(“myPara”)方法获得这些参数。 getPa

4、rameter() 方法的语法: String 保存参数值的变量 = getParameter(“参数名”); getParameter()方法有一个参数,返回包含对应该参数值的一个字符串。 例如:String theFontName=getParameter(“font”);,二、注意 1、作为在中指定的参数名,和在getParameter()的参数名必须完全匹配; 2、如果用户没有在HTML文件中指定所需的参数,getParameter()就返回null。用户层次需要测试一个null参数,并提供一个适当的缺省。 例如: if (theFontName=null) theFontName=”

5、Courier”;,三、例子 import java.awt.*; import java.applet.*; public class AppletofParam extends Applet private String paramName; /保存返回对应参数值的字符串 public void init() paramName=getParameter(“who”); if (paramName=null) paramName=”world”; public void paint(Graphics g) super.paint(g); g.drawString(“Hello ”+para

6、mName+ “ !”, 50,50); ,程序对应的HTML文件: This is the example of Parametr transfer ,请注意applet文件和 HTML文件中红色的对应 paramName=getParameter(“who”); ,三、例子 import java.awt.*; import java.applet.*; public class AppletofParam extends Applet private String paramName; /paramName用来保存返回对应参数值的字符串 public void init() paramN

7、ame=getParameter(“who”);,01 / App19_3, 简单的applet程序 02 import java.awt.*; 03 import java.applet.Applet; 04 05 public class App19_3 extends Applet 06 public void paint(Graphics g) 07 08 g.drawString(getParameter(“str1“),30,40); / 取得html里的str1串 09 g.drawString(getParameter(“str2“),30,60); / 取得html里的str

8、2串 09 10 11 12 13 ,直接通过函数获得HTML中的参数, 09 10 , 08 g.drawString(getParameter(“str1“),30,40); / 取得html里的str1字符串 09 g.drawString(getParameter(“str2“),30,60); / 取得html里的str2字符串,显示效果,Applet的运行程序 当屏幕需要更新以显示新的内容,窗口通过制作必须更新的区域(矩形)来处理,然后画出显示的结果。 由update()和paint() 方法完成。 update()方法: 取Graphics类对象作为参数。 当applet区域需要

9、重画时,Windows系统开始画画过程。 调用update()方法清除屏幕再调用paint()方法,屏幕然后由系统更新。,paint()方法: 取Graphics类对象作参数,在绘画区画applet的图象。方法被第一次自动激活时,applet显示在屏幕上而且每次applet收到焦点,由调用repaint()方法而触发paint()方法。 repaint()方法: 当想要重画applet的区域时调用该方法。repaint()方法是调用update()方法发出applet需要更新的信号。 update()方法的缺省操作是清除applet区域和调用paint()方法,如果不想清除applet区域可以

10、抑制update()方法。,例子: import java.applet.*; import java.awt.*; public class AppletMethods extends Applet int initCounter=0; int startCounter =0; int stopCounter =0; int destroyCounter=0; public void init() initCounter+; repaint(); public void start() startCounter+; repaint(); public void stop() stopCoun

11、ter+; repaint(); ,public void destroy() destroyCounter+; repaint(); public void paint(Graphics g) g.drawString(“init has been invoked“ + String.valueOf (initCounter) +“times“,20,20); g.drawString(“start has been invoked“ + String.valueOf (startCounter) + “times“,20,35); g.drawString(“stop has been i

12、nvoked“ + String.valueOf(stopCounter) + “times“,20,50); g.drawString(“destroy has been invoked“ + String. valueOf(destroyCounter) +“ times“,20,65); ,加入AWT组件到applet里,创建组件的对象 将创建好的对象加入到Applet窗口里 若要实现组件的功能,还需为其添加监视器和写相应的代码,/例:加入AWT组件到applet里 08 Button btn; / 声明Button类型的变量btn 09 public void init() 10 11

13、 btn=new Button(“Start“); / 创建btn对象 12 btn.addActionListener(this); / applet本身作btn的聆听者 13 add(btn); / 将btn按钮加入applet窗口里 14 ,15 public void actionPerformed(ActionEvent e) 16 17 if(btn.getLabel()=“Start“) 18 btn.setLabel(“Stop“); / 设置按钮上方的文字为Stop 19 else 20 btn.setLabel(“Start“); / 设置按钮上方的文字为Start 21

14、,实现接口中的方法,以使得控件能够响应用户事件,以上代码以实现程序所要求的该控件的功能,加载与显示影像,声明Image类型的变量 利用getImage()加载图片 利用drawImage()绘出图片,在applet里除了可以绘制图形外,也可以加载图片(即影像)。加载与显示图片的操作相当简单,只要下列三个操作就可以了:,/例: / 以下只给出三个主要操作 08 Image img; / 声明Image类型的变量img 09 10 public void init() 11 12 img=getImage(getCodeBase(),“baby.jpg“); / 加载baby.jpg图片 13 /

15、其中baby.jpg文件应该与此class文件处于相同文件夹下 14 15 public void paint(Graphics g) 16 17 g.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必须置于同一个目录下才能

16、运行 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做缩放的操作。,移动影像,前一章用鼠标移

17、动了圆形,现在利用相同的原理,也可以很容易地写出移动影像的程序代码。App19_9是利用相同的原理来移动一只加载的黄金鼠影像, 如下是此例的代码:,01 / App19_9, 在applet里移动图片 02 import java.awt.*; 03 import java.awt.event.*; 04 import java.applet.Applet; 05 06 public class App19_9 extends Applet implements MouseMotionListener, MouseListener 07 08 Image img; /声明Image类型的变量i

18、mg 09 int x=70,y=60,posX=70,posY=60,dx,dy; 10,/init()方法初始化applet 11 public void init() 12 13 img=getImage(getCodeBase(),“mouse.gif“); / 加载影像 14 addMouseListener(this); 15 addMouseMotionListener(this); 16 17 public void mousePressed(MouseEvent e) 18 19 dx=e.getX()-posX; / 取得按下点与基准点x方向的距离 20 dy=e.getY

19、()-posY; / 取得按下点与基准点y方向的距离 21 ,/鼠标拖拽事件处理 22 public void mouseDragged(MouseEvent e) 23 24 x=e.getX()-dx; / 取得拖曳时基准点的x坐标 25 y=e.getY()-dy; / 取得拖曳时基准点的y坐标 26 if(dx0 / 清空画面为背景颜色,再调用paint() 30 31 ,/paint()方法处理 32 public void paint(Graphics g) 33 34 g.drawImage(img,x,y,120,60,this); / 将img画在applet上 35 pos

20、X=x; / 更新基准点的x坐标 36 posY=y; / 更新基准点的y坐标 37 38 public void mouseMoved(MouseEvent e); 39 public void mouseReleased(MouseEvent e); 40 public void mouseEntered(MouseEvent e); 41 public void mouseExited(MouseEvent e); 42 public void mouseClicked(MouseEvent e); 43 ,/调用applet的html页 01 02 03 04 08 09 10 ,播放

21、音乐文件,除了可以在applet的窗口内显示图片之外, 也可以在applet内播放音乐! 在applet内播放音乐非常的简单,只要利用java.applet类库里的AudioClip接口就可以了,AudioClip接口定义了三个简单的方法,分别为loop()、play()与stop() ,其功能列表如下所示。 表19-3 java.applet.AudioClip的方法,01 / App19_10, 在applet播放音乐文件 /引用需要的包注意 02 import java.awt.*; 03 import java.awt.event.*; 04 import java.applet.Ap

22、plet; 05 import java.applet.AudioClip;,目前Java J2SE 1.4版所支持的声音文件已相当的齐全,且目前的浏览器也可播放au、wav与midi等类型的文件。 下面是一个用APPLET实现的播放音乐文件的例子。,06 /定义类并进行必要的变量设置 07 public class App19_10 extends Applet implements ItemListener 08 09 AudioClip midi=new AudioClip3; / 声明AudioClip接口类型的数组 10 AudioClip current; / 声明AudioCli

23、p接口类型的变量current 11 12 Choice chc=new Choice(); / 创建Choice组件 加载三个声音文件,并把它们设置给midi数组 13,/INIT()方法,进行必要的初始化工作 14 public void init() 15 /加载声音文件,并把它们放入midi数组中 16 midi0=getAudioClip(getCodeBase(),“Totoro.midi“); 17 midi1=getAudioClip(getCodeBase(),“UnderTheSea.midi“); 18 midi2=getAudioClip(getCodeBase(),“

24、LionKing.midi“); /在选择控件中添加要播放的文件名称如下 19 chc.add(“龙猫“); 20 chc.add(“小美人鱼“); 21 chc.add(“狮子王“); 22 add(chc); /将选择控件添加到APPLET上 / 把applet当成chc的聆听者,及监视器 23 chc.addItemListener(this); 24 current=midi0; / 设置目前播放的歌曲为midi0 25 current.play(); / 播放歌曲 26 ,27 /处理选择控件的选择事件 28 public void itemStateChanged(ItemEven

25、t e) 29 30 current.stop(); / 停止播放歌曲 / 取得被选取的索引值 31 int index=chc.getSelectedIndex(); / 设置播放的歌曲为midiindex 32 current=midiindex; 33 current.play(); / 播放歌曲 34 35 ,程序说明:,第9行声明了AudioClip接口类型的数组midi,数组元素为3个。 第10行声明了另一个AudioClip接口类型的变量current,用来记录目前正在播放的歌曲。 第1618行利用getAudioClip() 方法加载声音文件,并把它们设置给midi数组的元素。 第1921将歌曲名称加入下拉菜单中 第23行设置applet本身为下拉菜单的聆听者 第24行指明了目前播放的歌曲为midi0 在第25行开始播放。,当下拉菜单里的项目被选取时,第2834行的itemStateChanged() 方法会被运行。 第30行先停止目前正在播放的歌曲 第31行取得下拉菜单里被选取的索引值 第32行依此索引值设置目前播放的歌曲为midiindex 最后第36行开始播放。 值得一提的是,AudioClip具有混声的功能,即可以同时播放好几个声音文件。 因此在本例中,须先停止目前正在播放的歌曲才能再播放其他歌曲,否则会有两个以上的歌曲一起播放的情形。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1