为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

练习55声音播放器(应用程序中)

2018-09-08 6页 doc 49KB 7阅读

用户头像

is_663204

暂无简介

举报
练习55声音播放器(应用程序中)源码网整理,www.codepub.com,下载源码就到源码网! 练习55 声音播放器(应用程序中) 本例知识点 一句话讲解 新学知识 使用FileInputStream类 读取文件内容 使用AudioPlayer类 播放声音 已学知识 使用File类 选取文件 使用Button类 生成按钮 一、练习具体要求 本练习制作应用程序中的声音播放器,运行效果如图55-1所示。执行本例实例后,将创建一个带有4个按钮的运行界面。按下Open按钮可以选择要播放的声音文件(*.au),按下P...
练习55声音播放器(应用程序中)
源码网整理,www.codepub.com,下载源码就到源码网! 练习55 声音播放器(应用程序中) 本例 一句话讲解 新学知识 使用FileInputStream类 读取文件内容 使用AudioPlayer类 播放声音 已学知识 使用File类 选取文件 使用Button类 生成按钮 一、练习具体要求 本练习制作应用程序中的声音播放器,运行效果如图55-1所示。执行本例实例后,将创建一个带有4个按钮的运行界面。按下Open按钮可以选择要播放的声音文件(*.au),按下Play按钮可以播放当前的声音文件,按下Loop按钮可以循环播放当前声音文件,按下Stop按钮可以停止播放当前声音文件。本实例的知识点有:FileDialog类,FileInputStream类,AudioStream类和AudioData类的应用。 二、程序及注释 (1)编程思路:本例因为要选择声音文件,所以首先要打开一个声音文件,以此文件名作为FileInputStream构造函数的参数,实例化一个FileInputStream类的对象 fis。然后,因为要保存声音数据,所以首先要用fis作为数AudioStream构造函数的参数;然后实例化一个AudioStream类对象as,声音数据就存在as的Data域;再调用函数as.getData()把声音数据保存在AudioData的对象theData里。最后,因为播放声音文件,所以首先要用theData对象实例化AudioDataStream对象ads(如果需要一次播放声音数据的话)或者用ContinuousAudioDataStream对象cads(如果需要循环播放的话),然后只要以ads 或cads 为参数,调用函数AudioPlayer.player.start(),就完成了播放声音的全过程。 (2) 程序实现及注释: //SoundPlayer.java import sun.audio.*; import java.awt.*; import java.io.*; import java.awt.event.*; public class SoundPlayer extends Frame implements FilenameFilter,ActionListener { Button openButton = new Button("Open"); Button playButton = new Button("Play"); Button loopButton = new Button("Loop"); Button stopButton = new Button("Stop"); Label filename = new Label(" "); File theFile = null; AudioData theData = null; InputStream nowPlaying = null; public SoundPlayer(){ //设置标题栏文字 super("SoundPlayer"); //关闭窗口时退出程序 addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } } ); //设置窗口大小 setSize(300,200); //设置窗口背景色 setBackground(Color.orange); //设置窗口上方面板控件内容 Panel north = new Panel(); north.setLayout(new FlowLayout(FlowLayout.LEFT)); north.add(new Label("File: ")); north.add("NORTH",filename); add("North",north); //设置窗口下方面板控件内容 Panel south = new Panel(); south.add(openButton); south.add(playButton); south.add(loopButton); south.add(stopButton); add("South",south); //为按钮添加事件监听 openButton.addActionListener(this); playButton.addActionListener(this); loopButton.addActionListener(this); stopButton.addActionListener(this); } //主函数,应用程序入口处 public static void main(String[] args){ SoundPlayer sp = new SoundPlayer(); sp.show(); } //打开文件 public void open(){ FileDialog fd = new FileDialog(this,"please select a file"); fd.setFilenameFilter(this); fd.show(); try{ theFile = new File(fd.getDirectory()+"/"+fd.getFile()); if(theFile != null){ filename.setText(theFile.getName()); FileInputStream fis = new FileInputStream(theFile); AudioStream as = new AudioStream(fis); theData = as.getData(); } } catch(IOException e){ System.err.println(e); } catch(SecurityException e){ System.out.println("security exception"); } } //开始播放 public void play(){ stop(); if(theData == null) open(); if(theData != null){ AudioDataStream ads = new AudioDataStream(theData); AudioPlayer.player.start(ads); nowPlaying = ads; } } //停止播放 public void stop(){ if(nowPlaying != null){ AudioPlayer.player.stop(nowPlaying); nowPlaying = null; } } //循环播放 public void loop(){ stop(); if(theData == null) open(); if(theData != null){ ContinuousAudioDataStream cads = new ContinuousAudioDataStream(theData); AudioPlayer.player.start(cads); nowPlaying = cads; } } //事件响应 public void actionPerformed(ActionEvent e){ if(e.getSource() == playButton){ play(); } if(e.getSource() == openButton){ open(); } if(e.getSource() == loopButton){ loop(); } if(e.getSource() == stopButton){ stop(); } } public boolean accept(File dir,String name){ return true; } } 三、练习效果(如图55-1所示) 本实例代码编写完毕,存盘为:C: j2sdk1.4.0\javaprograms\ SoundPlayer.java。打开计算机的命令提示符窗口,然后在命令提示符窗口中,定位到javaprograms目录,输入javac SoundPlayer.java 来编译程序,用java SoundPlayer命令便可以看到制作效果。 图55-1练习效果 四、总结提高 通过制作声音播放器的练习,运用了Java2中的界面设计技术和文件读取技术。通过界面设计技术,制作了播放器的用户界面。通过文件读取技术,可以打开要播放的声音文件以便进行播放。 源码网教程下载,www.codepub.com
/
本文档为【练习55声音播放器(应用程序中)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索