注册 登录
编程论坛 JAVA论坛

用list存音乐url 为什么 stop()无反应

a3575181 发布于 2017-04-21 13:30, 1610 次点击
能play()   但无法stop()音乐




程序代码:
package midterm;


import java.awt.*;
import java.applet.*;
import java.awt.event.*; //系统导入类
import import java.util.ArrayList;

import javax.swing.JApplet;
public class music extends Applet implements ActionListener{
    private final ArrayList<URL> list = new ArrayList<URL>();
    AudioClip cp;
    Button b1,b2,b3;
    private final String[] wav = { "0.wav", "1.wav", "2.wav"};
    public void init(){
    cp=getAudioClip(getCodeBase(),"2.wav"); //读取指定文件
    b1=new Button("播放");
    b2=new Button("停止");
    b3=new Button("单曲循环"); //来个按钮控件
    b1.addActionListener(this);
    b2.addActionListener(this);
    b3.addActionListener(this); //给按钮加监听器
    add(b1);
    add(b2);
    add(b3); //界面中显示按钮
}
    public ArrayList<URL> getlist(){
        
         list.add(this.getClass().getClassLoader().getResource(wav[1]));
        return list;
    }
   
public AudioClip getwav(){
      
         AudioClip co1 = JApplet.newAudioClip(getlist().get(0));
        
         return co1;
     }
    public void stop(){
        getwav().stop();
    }//开始时,使音乐不能自动播放

    public void actionPerformed(ActionEvent e){
    if(e.getSource()==b1){
        getwav().play();}
        else if(e.getSource()==b2){
            getwav().stop();}
        else if(e.getSource()==b3){
            getwav().loop();
        }
    }}//看用户点击哪个按钮,好响应相关操作
2 回复
#2
冷月闲照2017-07-25 23:43
public ArrayList<URL> getlist(){
         list.add(this.getClass().getClassLoader().getResource(wav[1]));
        return list;
    }
这个方法每调用一次添加一个重复的这个有点不大合适,但是真正的错误在这个地方
public AudioClip getwav(){
         AudioClip co1 = JApplet.newAudioClip(getlist().get(0));
         return co1;
     }
你第二次点击时AudioClip 已经不是原来那个了,原来那个你已经访问不到了。
你是不是新手啊,建对象如此的草率,还有代码质量真不怎么的,需要去改正了。
#3
a35751812019-09-19 02:10
回复 2楼 冷月闲照
对不起 这代码是老师给的代码 我已经换了另外一种方法做出来了
1