练习55声音播放器(应用程序中)源码网整理,www.codepub.com,下载源码就到源码网!
练习55 声音播放器(应用程序中)
本例知识点
一句话讲解
新学知识
使用FileInputStream类
读取文件内容
使用AudioPlayer类
播放声音
已学知识
使用File类
选取文件
使用Button类
生成按钮
一、练习具体要求
本练习制作应用程序中的声音播放器,运行效果如图55-1所示。执行本例实例后,将创建一个带有4个按钮的运行界面。按下Open按钮可以选择要播放的声音文件(*.au),按下P...
源码网整理,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,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。