java是当今世界上非常流行的一种编程语言。它是由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的,是一种为Internet发展而突破用户端机器环境和CPU结构、写一次即可在任何机器上执行(Write Once,Run Anywhere)的语言。
介绍完Java的特性与优势后,我将开始介绍如何制作音频播放程序。Java中有许多可以制作音频播放的包和类,包括java.applet.AudioClip、com.sun.media.sound.JavaSoundAudioClip和javax.sound.midi.spi&javaw.sound.sampled.spi等,其中java.applet.AudioClip是从JDK1.0就存在的一个接口,其余的多个类是对这个接口的实现及丰富其功能。
下面,我将带领大家利用com.sun.media.sound中的JavaSoundAudioClip类制作一个简单的音频播放器小程序。
我采用的是Borland公司的JBuilder,这是一个大型的Java集成开发环境。
我们共创建4个类,如下表:
类名
MyFrame
AudioPlay
GifPanel
Test
功能
界面GUI
播放音频文件
存放gif图片的面板
测试类
1.生成application的GUI
首先,利用JBuilder的Wizard自动生成一个带有菜单栏的Application,然后在Frame中添加控件。如下所示:
类型
JList
JButton
JButton
JButton
JButton
JFileChooser
名称
jList1
jBTnBack
jBtnPlay
jBtnStop
jBtnForward
fileChooser
功能
播放列表
后退
播放
停止
前进
打开文件对话框
在按钮的下面添加jList作为播放列表,为了避免画面的单调,我们在右边添加一幅gif,为了便于对gif进行治理,我们为它制作了一个面板,构成GifPanel类。完成后的界面如下图所示:
进入讨论组讨论。
2.构造AudioPlay类--音频播放wav,注重异常处理
需要注重的是,当播放时,界面上的各个按钮应当仍然可以对用户的操作进行事件响应,所以至少需要两个线程:一个控制歌曲的播放,另外一个对用户事件进行响应。因此我们的AudioPlay类需要实现Runable接口,以使用多线程技术。根据JDK的解释-JDK1.4.0,任何需要由线程执行的实例都应当实现Runable接口,而且由于我们只需要重写run()方法和stop()方法,并给start()方法多态化,所以我们选择实现Runable接口,这样就可以不需要继续Thread类而使用Thread类的实例来运行了。
package myplayer;
import com.sun.media.sound.JavaSoundAudioClip;
import java.io.*;
/**
* <p>Title: 音频播放器</p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author 放飞网
* @version 1.0
*/
public class AudioPlay
implements Runnable {
PRivate JavaSoundAudioClip locate, warning;
protected boolean threadExit;
protected boolean stopped;
protected boolean playing;
Thread playerThread;
public AudioPlay() {
}
public void start(File f) {
playing = true;