首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >再次按下J键后尝试停止播放wav文件,但没有停止

再次按下J键后尝试停止播放wav文件,但没有停止
EN

Stack Overflow用户
提问于 2017-05-03 00:28:01
回答 1查看 78关注 0票数 0

当用户按下按钮时,程序应该播放fitnessgram pacer测试。第二次按下按钮后,音频停止。再次按下按钮后,程序应重新从头开始播放测试。下面是我的代码:

代码语言:javascript
复制
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
import java.net.URL;
import javax.sound.sampled.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class aMeme extends JFrame implements ActionListener{
    public JButton button;
    public boolean check;
    public boolean audio;

    public void paint(Graphics g){
        if (check == true){
            BufferedImage img = null;
            try{
                img = ImageIO.read(newFile("C:/Users/kebrobst18/Downloads/Fitnessgram.png"));
            } catch (IOException e){
            }
            g.drawImage(img, 0, 0, this);
        }
    }

    public void start(){
        setLayout(new BorderLayout());
        button=new JButton();
        button.setPreferredSize(new Dimension(200, 100));
        button.setText("Start/Stop"); 
        button.addActionListener(this);
        add(button, BorderLayout.SOUTH);
        setSize(500,500);
        setVisible(true);
        audio = false;
    }   

    public void actionPerformed(ActionEvent e){    
        check = true;
        repaint();
        try{
            URL fg = new URL("http://sendeyo.com/up/8658f011a4c712b5da42f74af77729fe.wav");
            Clip fitness = AudioSystem.getClip();
            AudioInputStream gram = AudioSystem.getAudioInputStream(fg);
            fitness.open(gram);
            if (audio == false){
                fitness.start();
                audio = true;
            } else if (audio == true){
                fitness.stop();
                audio = false;
            }
        } catch (LineUnavailableException f){
        }
        catch (UnsupportedAudioFileException | IOException f) {
        }
    }

    public static void main(String args[]){
        aMeme x = new aMeme();
        x.start();
    }
}
EN

回答 1

Stack Overflow用户

发布于 2017-05-03 01:16:13

播放同一音频文件的简单示例:

代码语言:javascript
复制
import java.awt.event.*;
import javax.swing.*;
import javax.sound.sampled.*;
import java.net.URL;
import java.io.*;

class SoundTest {

  public static void main(String[] args) throws Exception {
    URL urlToSound = new URL("file:c:/java/gun1.wav");
//    URL urlToSound = new URL("file:c:/java/flyby1.wav");
    AudioInputStream ais = AudioSystem.getAudioInputStream(urlToSound);
    final Clip clip = AudioSystem.getClip();
    clip.open(ais);
    JButton button = new JButton("Bird Sounds");
    button.addActionListener( new ActionListener(){
        public void actionPerformed(ActionEvent ae) {
          clip.setFramePosition(0);
          clip.start();
        }
      } );
    JOptionPane.showMessageDialog(null, button);
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43742929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档