java音频播放器 程序运行时报错,求大神帮忙(代码应该没错,我照书抄的)

//代码如下importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjavax.sound.*... //代码如下
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.sound.*;
import javax.sound.midi.*;
import java.io.*;
public class MultiMidiDemo extends JFrame{
private String[] midFile={"犯贱.mid","美人鱼.mid"};
private MultiMidiPlayer midipanel;
public MultiMidiDemo()
{
super("MultiMidiDemo");
try{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(Exception e){e.printStackTrace();}
setSize(400,400);

Container container=getContentPane();

midipanel=new MultiMidiPlayer(midFile);
container.add(midipanel);

setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
MultiMidiDemo mmd=new MultiMidiDemo();
}
}
class MultiMidiPlayer extends JPanel implements Runnable,ActionListener{
private Thread runner;
private JPanel buttonpanel;
private JButton play,stop;
private JLabel label;
private Sequence currentSound;
private Sequencer player;
private String[] songFile;
private int songtoplay;
public MultiMidiPlayer(String[] songs) {
super();
try{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(Exception e){e.printStackTrace();}
setSize(400,400);
songFile=songs;
label=new JLabel("",JLabel.CENTER);
label.setPreferredSize(new Dimension(400,30));
//创建按钮
play=new JButton("play");
stop=new JButton("stop");
stop.setEnabled(false);
play.addActionListener(this);
stop.addActionListener(this);
setLayout(new BorderLayout());
//将标签加入内容窗体
add(label,BorderLayout.NORTH);
buttonpanel=new JPanel();
buttonpanel.add(play);
buttonpanel.add(stop);
add(buttonpanel,BorderLayout.CENTER);
if(songFile.length==0){
play.setEnabled(false);
}
}
//事件处理
public void actionPerformed(ActionEvent e) {
if(e.getSource()==play)
play();
else
stop();
}
//停止播放
private void stop() {
if(runner!=null){
runner=null;
stop.setEnabled(false);
play.setEnabled(true);
}
}
private void play() {
if(runner==null){
runner=new Thread(this);//创建线程
runner.start();//启动线程
play.setEnabled(false);
stop.setEnabled(true);
}
}
@Override
public void run() {
try{
player=MidiSystem.getSequencer();
}catch(Exception e){e.printStackTrace();}
while(Thread.currentThread()==runner){
for(songtoplay=0;songtoplay<songFile.length;songtoplay++)
{
if(songFile[songtoplay]!=null){
try{
File song=new File(songFile[songtoplay]);
//获取音序
currentSound=MidiSystem.getSequence(song);
player.open();
//设置音序器的音序
player.setSequence(currentSound);
//播放
player.start();
label.setText("正在播放:"+song.getName());
while(player.isRunning()&&runner!=null){
try{Thread.sleep(1000);
}catch(Exception e){
e.printStackTrace();
}
}
label.setText("");
player.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
}
}

}

报错如下
展开
 我来答
若以下回答无法解决问题,邀请你更新回答
电脑使用敌手
2013-01-07
知道答主
回答量:7
采纳率:0%
帮助的人:13.4万
展开全部
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式