




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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,独立执行的应用程序。 Apple
2、t,小应用程序,简称小程序,嵌入浏览器运行。通过把小程序嵌入到 HTML网页文件而实现。 java.applet包的Applet类是小程序的根, 编写小程序必须自定义一个继承Applet或JApplet的类。 JApplet位于javax.swing包,是Applet的子类。 Applet容器默认布局是FlowLayout,JApplet容器是BorderLayout。 JDK提供了模拟浏览器运行命令appletviewer(小程序查看器)。,【例18-1】编写绘制矩形和椭圆的小程序。,Java源程序如下(存放在Example1.java文件): import javax.swing.JApp
3、let; 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)vo
4、id stop():停止方法。 (4)void destroy():销毁方法。 这4个方法是根类Applet定义,都能自动执行。编程者可以按需要在小程序主类中重写这些方法。 (5)void paint(Graphics g):绘制图形或文字的方法,来自容器根类Container。 其中Graphics是图形上下文(图形环境)抽象类,对象要从其他图形上下文中获取,或者通过调用组件的getGraphics()方法来构建。Graphics对象g相当画笔,,【例18-2】编写测试小程序生命周期的程序。,public class Example2 extends JApplet StringBuffer
5、 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.print(in
6、fo); 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服务器的音频文件sheep.w
7、av: public void start() try URL url = new URL(/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文件)基址,返回URL对象
9、。,【例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 buttons = new JBu
10、tton(播放), 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 ActionHandler(); panel.add(buttons
11、i); 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.stop(); 在Eclipse环境下编程,
12、不需要手工编写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); 网页文件如下(存放在Example4.html文件): ,获取参数方法: Str
13、ing getParameter(String name):返回超文本标记中指定的参数值。 允许在网页中设置多个参数,于是小程序可以获取多个值。 【例18-5】编写网页传值的音乐播放小程序。在下拉组合框中选择音频文件名,单击“播放”按钮以播放;单击“循环”按钮,反复播放;单击“停止”按钮,停止播放。其中音频文件名通过网页传递过来。,public class Example5 extends JApplet Image img; ImageIcon icon; /图标 JLabel labelUp = new JLabel(请选播歌曲,或循环播放); JPanel panel = new JPa
14、nel(); 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(this.getCodeBase(), welcome.png); ic
15、on = 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 ActionHandler(); panel.add(buttonsi); comboBox
16、.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 = audioscomboBox.getSelectedIndex(); else
17、 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 getImage(URL url, String name) 图像通过调用Imag
18、eIcon类构造方法转为一个图标,在标签或按钮上显示。也可使用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); /绘制图像 ,Grahpics类drawImage方法的4种重载形式: (1)boolean dr
19、awImage(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, Color bgcolor, ImageObserver observer):按给定位
20、置和背景色绘制图像。 (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类没有。 (2)void showStatus(String msg) 除了菜单
21、栏、状态栏,也可在小程序中设置工具栏。 菜单栏、工具栏及其上面的组件要独立构建。而状态栏则是小程序本身自带的。 【例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(); /当前日期 this.showStatus(date.toString(); try Thread.sleep(1000); catch(InterruptedException e) public void init() img
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人工智能在智能制造中的生产优化策略-全面剖析
- 女性政治领袖的选举效应-全面剖析
- 传统文化传承路径研究-全面剖析
- 基于深度学习的拼写错误检测技术-全面剖析
- 污水处理微生物基因表达-全面剖析
- 浏览器安全性能优化-全面剖析
- 垃圾处理设施规划与建设-全面剖析
- 人工智能艺术生成与设计-全面剖析
- 天津市南开区2024-2025学年高三下学期质量监测(一)地理试卷(原卷版+解析版)
- 人教部编版六年级上册语文期中句子专项 测试卷 含答案
- 楼梯踏步抹灰标准合同7篇
- 【厦门大学】DeepSeek大模型赋能高校教学和科研
- 西安房屋租赁合同(官方版)6篇
- 2025年商丘职业技术学院单招职业技能考试题库含答案
- 2025年榆林城市投资经营集团有限公司招聘笔试参考题库含答案解析
- 2025届高三化学二轮复习 化学工艺流程 课件
- 2024广东深圳市龙岗区产服集团“春雨”第二批招聘笔试笔试参考题库附带答案详解
- 光驱的读取偏移值度矫正数据
- 压力容器基础知识
- 教你写出漂亮字体——钢笔楷书字帖
- 2019年安徽省八年级学业水平考试地理试卷(含答案)
评论
0/150
提交评论