音乐播放器的问题 求高手指点!!!不知道咋回事

落梨 2010-10-24 04:28:58
哪位大侠帮忙解决一下 谢谢啦
在一本资料书上看到的

package daima;

import java.applet.AudioClip;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
//声音播放程序
public class Musictest extends JFrame implements ActionListener,ItemListener {

boolean looping = false; //是否循环播放
String[] choics = {
"buchao.wav",
"geiwonideai.wav",
"IWantedYou.wav",
"mianhuatang.wav",
"nihaiqianwoyigeyongbao.wav",
"xuejian.wav",
"yuanwang.wav",
}; //声音文件名数组

URL file1 = getClass().getResource(choics[0]); //声音文件1
URL file2 = getClass().getResource(choics[1]); //声音文件2
URL file3 = getClass().getResource(choics[2]); //声音文件3
URL file4 = getClass().getResource(choics[3]); //声音文件4
URL file5 = getClass().getResource(choics[4]); //声音文件5
URL file6 = getClass().getResource(choics[5]); //声音文件6

AudioClip sound1 = java.applet.Applet.newAudioClip(file1); //声音剪辑对象1
AudioClip sound2 = java.applet.Applet.newAudioClip(file2); //声音剪辑对象2
AudioClip sound3 = java.applet.Applet.newAudioClip(file3); //声音剪辑对象3
AudioClip sound4 = java.applet.Applet.newAudioClip(file4); //声音剪辑对象4
AudioClip sound5 = java.applet.Applet.newAudioClip(file5); //声音剪辑对象5
AudioClip sound6 = java.applet.Applet.newAudioClip(file6); //声音剪辑对象6

AudioClip chosenClip = sound1; //选择的声音剪辑对象
JComboBox jcbFiles = new JComboBox(choics); //文件选择组合框
JButton playButton = new JButton("播放"); //播放按钮
JButton loopButton = new JButton("循环播放按钮"); //循环播放按钮
JButton stopButton = new JButton("停止"); //停止播放按钮
JLabel status = new JLabel("选择播放文件"); //状态栏标签
JPanel controlPanel = new JPanel(); //控制面板用于包容按钮
Container container = getContentPane(); //获得窗口内容窗格

public Musictest() { //构造器
super("音乐播放器"); //调用父类构造器设置窗口标题栏
jcbFiles.setSelectedIndex(0); //设置组合框选择项
jcbFiles.addItemListener(this); //为播放按钮添加项目监听器
//为播放按钮、循环播放按钮、停止播放按钮添加动作监听器
playButton.addActionListener(this);
loopButton.addActionListener(this);
stopButton.addActionListener(this);
stopButton.setEnabled(false); //设置停止播放按钮不可用
//把播放按钮、循环播放按钮、停止播放按钮加入控制面板
controlPanel.add(playButton,BorderLayout.CENTER);
controlPanel.add(loopButton,BorderLayout.CENTER);
controlPanel.add(stopButton,BorderLayout.CENTER);
//把文件选择组合框、控制面板、状态栏标签加入到窗口内容窗格
container.add(jcbFiles, BorderLayout.NORTH);
container.add(controlPanel, BorderLayout.CENTER);
container.add(status, BorderLayout.SOUTH);
setSize(250,530); //设置窗口大小
setVisible(true); //设置窗口可见
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序
}

//文件选择组合框事件处理
public void itemStateChanged(ItemEvent e) {
switch (jcbFiles.getSelectedIndex()) {
case 0:
chosenClip = sound1;
break;
case 1:
chosenClip = sound2;
break;
case 2:
chosenClip = sound3;
break;
case 3:
chosenClip = sound4;
break;
case 4:
chosenClip = sound5;
break;
case 5:
chosenClip = sound6;
break;
default:
chosenClip = sound1;
break;
}
}
//按钮事件处理
public void actionPerformed(ActionEvent event) {
if(chosenClip == null) {
status.setText("声音未载入");
return; //如果AudioClip对象为空,则直接返回
}
Object source = event.getSource(); //获取用户激活的按钮
//播放按钮事件处理
if(source == playButton) {
stopButton.setEnabled(true); //设置停止播放按钮可用
loopButton.setEnabled(true); //设置循环播放按钮可用
chosenClip.play(); //播放选择的声音剪辑对象一次
status.setText("正在播放"); //设置状态栏信息
}
//循环播放按钮事件处理
if(source == loopButton) {
looping = true;
chosenClip.loop(); //循环播放选择的声音剪辑对象
loopButton.setEnabled(false); //设置循环播放按钮不可用
stopButton.setEnabled(true); //设置停止播放按钮可用
status.setText("正在循环播放"); //设置状态栏信息
}
//停止播放按钮事件处理
if(source == stopButton) {
if(looping) {
looping = false;
chosenClip.stop(); //停止循环播放选择的声音剪辑对象
loopButton.setEnabled(true); //设置循环播放按钮可用
} else {
chosenClip.stop(); //停止播放选择的声音剪辑对象
}
stopButton.setEnabled(false); //设置循环播放按钮可用
status.setText("停止播放"); //设置状态栏信息
}
}
public static void main(String[] args) {
new Musictest(); //创建Musictest对象
}
}

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at com.sun.media.sound.JavaSoundAudioClip.readStream(JavaSoundAudioClip.java:328)
at com.sun.media.sound.JavaSoundAudioClip.loadAudioData(JavaSoundAudioClip.java:307)
at com.sun.media.sound.JavaSoundAudioClip.<init>(JavaSoundAudioClip.java:93)
at sun.applet.AppletAudioClip.createAppletAudioClip(AppletAudioClip.java:108)
at sun.applet.AppletAudioClip.<init>(AppletAudioClip.java:49)
at java.applet.Applet.newAudioClip(Applet.java:279)
at daima.Musictest.<init>(Musictest.java:30)
at daima.Musictest.main(Musictest.java:129)
...全文
156 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
落梨 2010-11-08
  • 打赏
  • 举报
回复
真的很难啊

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧