第18章音乐播放1——小程序.ppt

上传人:本田雅阁 文档编号:3422021 上传时间:2019-08-23 格式:PPT 页数:26 大小:428.04KB
返回 下载 相关 举报
第18章音乐播放1——小程序.ppt_第1页
第1页 / 共26页
第18章音乐播放1——小程序.ppt_第2页
第2页 / 共26页
第18章音乐播放1——小程序.ppt_第3页
第3页 / 共26页
第18章音乐播放1——小程序.ppt_第4页
第4页 / 共26页
第18章音乐播放1——小程序.ppt_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《第18章音乐播放1——小程序.ppt》由会员分享,可在线阅读,更多相关《第18章音乐播放1——小程序.ppt(26页珍藏版)》请在三一文库上搜索。

1、第18章 音乐播放 小程序,能力目标: 理解小程序Applet的生命周期及常用方法。 学会在小程序里绘制图形、图像和文字。 理解如何通过HTML文件向小程序传递参数值。 能编写音乐播放小程序,还能结合多线程,在小程序中动态显示当前时间。,内容介绍,18.1 任务预览 18.2 小程序 18.3 生命周期与常用方法 18.4 播放声音 18.5 网页传值 18.6 绘制图像 18.7 状态栏动态显示时间 18.8 本章小结 18.9 实训18:音乐播放与时间显示,18.1 任务预览,本章实训程序运行结果:,18.2 小程序,Java程序有: Application,独立执行的应用程序。 Appl

2、et,小应用程序,简称小程序,嵌入浏览器运行。通过把小程序嵌入到 HTML网页文件而实现。 java.applet包的Applet类是小程序的根, 编写小程序必须自定义一个继承Applet或JApplet的类。 JApplet位于javax.swing包,是Applet的子类。 Applet容器默认布局是FlowLayout,JApplet容器是BorderLayout。 JDK提供了模拟浏览器运行命令appletviewer(小程序查看器)。,【例18-1】编写绘制矩形和椭圆的小程序。,Java源程序如下(存放在Example1.java文件): import javax.swing.JAp

3、plet; import java.awt.*; /下面是小程序主类 public class Example1 extends JApplet public void paint(Graphics g) g.drawRect(10, 10, 200, 100); g.drawOval(10, 10, 200, 100); ,网页文件如下(存放在Example1.html文件): ,18.3 生命周期与常用方法,生命周期:小程序从开始运行到结束的整个过程。 与生命周期紧密关联并能自动执行5个方法: (1)void init():初始化方法。 (2)void start():启动方法。 (3)v

4、oid stop():停止方法。 (4)void destroy():销毁方法。 这4个方法是根类Applet定义,都能自动执行。编程者可以按需要在小程序主类中重写这些方法。 (5)void paint(Graphics g):绘制图形或文字的方法,来自容器根类Container。 其中Graphics是图形上下文(图形环境)抽象类,对象要从其他图形上下文中获取,或者通过调用组件的getGraphics()方法来构建。Graphics对象g相当画笔,,【例18-2】编写测试小程序生命周期的程序。,public class Example2 extends JApplet StringBuffe

5、r strBuf = new StringBuffer(); public void init() printInfo(“初始化.“); public void start() printInfo(“启动.“); public void stop() printInfo(“停止.“); public void destroy() printInfo(“销毁.“); public void paint(Graphics g) g.drawString(strBuf.toString(), 10, 20); public void printInfo(String info) System.out

6、.print(info); strBuf.append(info); this.repaint(); /调用重绘方法,主动执行paint方法 还有网页文件 ,18.4 播放声音,Java可播放wav、mid(midi)、aiff或au等音频文件。 小程序根类Applet与声音播放相关的方法: (1)AudioClip getAudioClip(URL url):获取URL类参数指定的音频剪辑对象。 AudioClip接口声明了3个方法: void play():播放音频剪辑。 void loop():循环播放音频剪辑。 void stop():停止播放音频剪辑。,例:播放本机IIS服务器的音频

7、文件sheep.wav: public void start() try URL url = new URL(“http:/127.0.0.1/sheep.wav“); AudioClip audio = this.getAudioClip(url); audio.play(); /播放声音。也可使用 this.play(url) catch(MalformedURLException e) 构造URL对象需要处理MalformedURLExceptionL异常。,(2)static final AudioClip newAudioClip(URL url): 该静态方法与方法(1)功能一样,

8、可用类名直接调用。 例: AudioClip audio = JApplet.newAudioClip(url); audio.loop(); /循环播放 (3)AudioClip getAudioClip(URL url, String name) (4)void play(URL url):播放指定音频。 (5)void play(URL url, String name) (6)URL getCodeBase():获取代码的基址,返回URL对象。代码是指小程序编译后的字节码。基址是字节码文件的目录。 (7)URL getDocumentBase():获取嵌入小程序的网页文档(HTML文件

9、)基址,返回URL对象。,【例18-3】编写播放声音的小程序。,import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.applet.AudioClip; public class Example3 extends JApplet ImageIcon icon = new ImageIcon(“welcome.png“); /图标 JLabel label = new JLabel(“请选择播放或循环播放声音:“); JPanel panel = new JPanel(); JButton bu

10、ttons = new JButton(“播放“), new JButton(“循环“), new JButton(“停止“) ; /按钮数组 AudioClip audio; /音频剪辑,public void init() /初始化方法 audio = this.getAudioClip(this.getCodeBase(), “sheep.wav“); label.setIcon(icon); this.add(label, BorderLayout.NORTH); for(int i=0;i3;i+) buttonsi.addActionListener(new ActionHandl

11、er(); panel.add(buttonsi); this.add(panel, BorderLayout.CENTER); /按钮动作事件监听处理类(内部类): class ActionHandler implements ActionListener public void actionPerformed(ActionEvent e) if (e.getSource()=buttons0) audio.play(); else if (e.getSource()=buttons1) audio.loop(); else if (e.getSource()=buttons2) audio

12、.stop(); 在Eclipse环境下编程,不需要手工编写HTML网页文件。,18.5 网页传值,通过网页传值,同一个小程序运行时可输出不同的结果。 【例18-4】编写网页文件传值的小程序。 Java源程序如下(存放在Example4.java文件): public class Example4 extends JApplet String str; public void init() str = this.getParameter(“prmt“); public void paint(Graphics g)g.drawString(str, 10, 20); 网页文件如下(存放在Exam

13、ple4.html文件): ,获取参数方法: String getParameter(String name):返回超文本标记中指定的参数值。 允许在网页中设置多个参数,于是小程序可以获取多个值。 【例18-5】编写网页传值的音乐播放小程序。在下拉组合框中选择音频文件名,单击“播放”按钮以播放;单击“循环”按钮,反复播放;单击“停止”按钮,停止播放。其中音频文件名通过网页传递过来。,public class Example5 extends JApplet Image img; ImageIcon icon; /图标 JLabel labelUp = new JLabel(“请选播歌曲,或循环

14、播放“); JPanel panel = new JPanel(); JComboBox comboBox = new JComboBox(); JButton buttons = new JButton(“播放“), new JButton(“循环“), new JButton(“停止“) ; String names = new String3; /音频文件名数组 AudioClip audios = new AudioClip3; /音频剪辑数组 AudioClip audio; /音频剪辑,public void init() /初始化方法 img = this.getImage(th

15、is.getCodeBase(), “welcome.png“); icon = new ImageIcon(img); /由图像构造图标 labelUp.setIcon(icon); names0 = this.getParameter(“music1“); /获取网页参数值 panel.add(comboBox); for(int i=0;i3;i+) comboBox.addItem(namesi); audiosi=this.getAudioClip(this.getCodeBase(), namesi); buttonsi.addActionListener(new ActionHa

16、ndler(); panel.add(buttonsi); comboBox.addActionListener(new ActionHandler(); this.add(labelUp, BorderLayout.NORTH); this.add(panel, BorderLayout.CENTER); audio = audios0; ,class ActionHandler implements ActionListener public void actionPerformed(ActionEvent e) if(e.getSource() = comboBox) audio = a

17、udioscomboBox.getSelectedIndex(); else if (e.getSource() = buttons0) audio.play(); else if (e.getSource() = buttons1) audio.loop(); else if (e.getSource() = buttons2) audio.stop(); 在Eclipse开发环境下编程,只需 设置参数名和参数值便可直接运 行,而无需编写网页文件。,18.6 绘制图像,小程序根类Applet中,与图像有关的方法: (1)Image getImage(URL url) (2)Image get

18、Image(URL url, String name) 图像通过调用ImageIcon类构造方法转为一个图标,在标签或按钮上显示。也可使用paint方法直接绘出。 【例18-6】编写绘制图像的小程序。 public class Example6 extends JApplet Image img; public void init() img = this.getImage(this.getCodeBase(), “web.gif“); public void paint(Graphics g) g.drawImage(img, 10, 10, 40, 40, this); /绘制图像 ,Gr

19、ahpics类drawImage方法的4种重载形式: (1)boolean drawImage(Image img, int x, int y, ImageObserver observer):在给定位置绘制图像。最后一个参数是图像观察器,可指定为当前对象this(或设为null)。 (2)boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver observer):图像按比例缩放到给定的尺寸。 (3)boolean drawImage(Image img, int x, int y, Col

20、or bgcolor, ImageObserver observer):按给定位置和背景色绘制图像。 (4)boolean drawImage(Image img, int x, int y, int width, int height, Color bgcolor, ImageObserver observer):按给定的位置、尺寸和背景色绘制图像。,18.7 状态栏动态显示时间,小程序设置菜单栏和显示状态栏方法: (1)void setJMenuBar(JMenuBar menuBar):设置小程序菜单栏。于是小程序中可以拥有自己的菜单。 注:本方法只在JApplet类中定义,Applet

21、类没有。 (2)void showStatus(String msg) 除了菜单栏、状态栏,也可在小程序中设置工具栏。 菜单栏、工具栏及其上面的组件要独立构建。而状态栏则是小程序本身自带的。 【例18-7】在例18-6小程序基础上, 增加状态栏,用于显示系统时间,每隔 一秒,动态刷新当前时间。,public class Example7 extends JApplet implements Runnable Image img; Date date; Thread thread; public void run() /线程运行方法 while(true) date = new Date();

22、/当前日期 this.showStatus(date.toString(); try Thread.sleep(1000); catch(InterruptedException e) public void init() img = this.getImage(this.getCodeBase(), “web.gif“); thread = new Thread(this); thread.start(); public void paint(Graphics g) g.setColor(Color.WHITE); g.fillRect(0, 0, this.getWidth(), this

23、.getHeight(); g.drawImage(img, 10, 10, 40, 40, this); ,18.8 本章小结,小程序要嵌入到HTML网页文件才能运行。 Java提供了小程序查看器命令,以模拟浏览器运行小程序。 在Eclipse和JBuilder开发环境中,能自动生成网页文件,而无需手工编写。 小程序的生命周期包括初始(诞生)、启动、停止、销毁(死亡)等状态,对应有相应的方法,这些方法能自动执行。编写小程序时按需要重写这些方法中的一个或几个,以执行相应的功能。 小程序可以播放音频文件,也可以绘制图像文件。 为安全起见,但凡涉及到读取文件的,均要求使用统一资源定位类URL定位文件。 通过网页文件,可传输数据到小程序中(网页传值)。 小程序也允许有菜单栏、工具栏和状态栏,其中状态栏是默认的,菜单栏、工具栏作为独立的组件,要另外构造。,18.9 实训18:音乐播放与时间显示,(1)编写音乐播放小程序,在下拉组合框中选择歌曲文件名,单击“播放”按钮进行播放;单击“循环”按钮,反复播放;单击“停止”按钮,停止播放选中的歌曲。 (2)在上题基础上,增加使用多线程每隔1秒在状态栏动态显示当前时间的功能。,谢谢! 返回目录 结束放映,

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

当前位置:首页 > 其他


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