JAVA用main方法无法运行程序播放音频 5
我用的编译软件是eclipse用applet运行的时候可以运行,但是选中歌曲点击播放的时候没有声音。。Exceptioninthread"main"java.lang.N...
我用的编译软件是eclipse
用applet运行的时候可以运行,但是选中歌曲点击播放的时候没有声音。。
Exception in thread "main" java.lang.NullPointerException
at java.applet.Applet.getCodeBase(Unknown Source)
at test3.AudioDemo2.pr(AudioDemo2.java:24)
at test3.AudioDemo2.main(AudioDemo2.java:90)
这是用应用程序方式点击运行的时候提示的错误,文件也放到项目文件那里了...
实在搞不懂哪里错了。。代码在下面。。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class AudioDemo extends JApplet{
private String[] audioFile={"LastButterFly.au","innocence.au","海阔天空.wav"}; //三个文件的名字
private JComboBox combFilename=new JComboBox(audioFile);
private String dirStr="multimedia/"; //文件所在的文件夹
private AudioClip[] audios;
private AudioClip audioPlay;
private JButton playButton,loopButton,stopButton;
public void init(){
audios = new AudioClip[audioFile.length];
for(int i=0;i<audios.length;i++){
audios[i]=getAudioClip(getCodeBase(),dirStr+audioFile[i]); //错在这个地方
}
audioPlay =audios[0];
combFilename.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e){
JComboBox cb=(JComboBox)e.getSource();
int i=cb.getSelectedIndex();
audioPlay=audios[i];
}
});
playButton = new JButton("播放");
playButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
audioPlay.play();
stopButton.setEnabled(true);
combFilename.setEnabled(false);
playButton.setEnabled(false);
loopButton.setEnabled(false);
}
});
loopButton = new JButton("循环");
loopButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
audioPlay.loop();
loopButton.setEnabled(false);
stopButton.setEnabled(true);
combFilename.setEnabled(false);
playButton.setEnabled(false);
}
});
stopButton = new JButton("停止");
stopButton.setEnabled(false);
stopButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
audioPlay.stop();
loopButton.setEnabled(true);
combFilename.setEnabled(true);
playButton.setEnabled(true);
}
});
JPanel controlPanel=new JPanel();
controlPanel.add(combFilename);
controlPanel.add(playButton);
controlPanel.add(loopButton);
controlPanel.add(stopButton);
setLayout(new BorderLayout());
add(controlPanel,BorderLayout.CENTER);
}
public void stop(){
audioPlay.stop();
}
} 展开
用applet运行的时候可以运行,但是选中歌曲点击播放的时候没有声音。。
Exception in thread "main" java.lang.NullPointerException
at java.applet.Applet.getCodeBase(Unknown Source)
at test3.AudioDemo2.pr(AudioDemo2.java:24)
at test3.AudioDemo2.main(AudioDemo2.java:90)
这是用应用程序方式点击运行的时候提示的错误,文件也放到项目文件那里了...
实在搞不懂哪里错了。。代码在下面。。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class AudioDemo extends JApplet{
private String[] audioFile={"LastButterFly.au","innocence.au","海阔天空.wav"}; //三个文件的名字
private JComboBox combFilename=new JComboBox(audioFile);
private String dirStr="multimedia/"; //文件所在的文件夹
private AudioClip[] audios;
private AudioClip audioPlay;
private JButton playButton,loopButton,stopButton;
public void init(){
audios = new AudioClip[audioFile.length];
for(int i=0;i<audios.length;i++){
audios[i]=getAudioClip(getCodeBase(),dirStr+audioFile[i]); //错在这个地方
}
audioPlay =audios[0];
combFilename.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e){
JComboBox cb=(JComboBox)e.getSource();
int i=cb.getSelectedIndex();
audioPlay=audios[i];
}
});
playButton = new JButton("播放");
playButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
audioPlay.play();
stopButton.setEnabled(true);
combFilename.setEnabled(false);
playButton.setEnabled(false);
loopButton.setEnabled(false);
}
});
loopButton = new JButton("循环");
loopButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
audioPlay.loop();
loopButton.setEnabled(false);
stopButton.setEnabled(true);
combFilename.setEnabled(false);
playButton.setEnabled(false);
}
});
stopButton = new JButton("停止");
stopButton.setEnabled(false);
stopButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
audioPlay.stop();
loopButton.setEnabled(true);
combFilename.setEnabled(true);
playButton.setEnabled(true);
}
});
JPanel controlPanel=new JPanel();
controlPanel.add(combFilename);
controlPanel.add(playButton);
controlPanel.add(loopButton);
controlPanel.add(stopButton);
setLayout(new BorderLayout());
add(controlPanel,BorderLayout.CENTER);
}
public void stop(){
audioPlay.stop();
}
} 展开
1个回答
2015-11-30
展开全部
audios[i]=getAudioClip(getCodeBase(),dirStr+audioFile[i]); 当中,getCodeBase()这是APPLET专有的方法
换Application要另外实现这个的方法
换Application要另外实现这个的方法
追问
就算这样。。但是用Applet运行的时候也无法读取音频文件来播放。。这个怎么办?
追答
音频文件,.class放所有的目录的dirStr对应的目录。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询