打开一个.wav文件并播放它 - Java

时间:2018-02-14 23:04:21

标签: java

默认情况下,代码中的歌曲为:" Hotel California.wav"

界面已经完成。我正在尝试做的是播放任何歌曲(保存在我的目录中)写下歌曲的名称(例如我在JTextField上写的:Last Nite(.wav))并且应用需要播放该歌曲并显示消息:"正在播放:Last Nite"。

这是我的代码:

import java.io.File;
import javax.swing.JOptionPane;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JTextField;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.GridLayout;
import java.awt.FlowLayout;

import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;

public class Audio3 extends JFrame implements ActionListener 
{
    private File songFile;
    private AudioInputStream audioStream;
    private Clip clip;
    private JButton bPlay, bStop;
    private JPanel panel1, panel2;
    private JTextField tfCancion;

    public Audio3() throws Exception 
    {
        super("Audio TEC");
        tfCancion = new JTextField();
        bPlay = new JButton("Play");
        bStop = new JButton("Stop");
        panel1 = new JPanel();
        panel2= new JPanel();


        panel1.setLayout(new GridLayout(2,2));
        panel2.setLayout(new FlowLayout());

        panel1.add(new JLabel("Song: "));
        panel1.add(tfCancion);
        panel1.add(bPlay);
        panel1.add(bStop);
        panel2.add(panel1);
        add(panel2);

        setVisible(true);
        setSize(400,300);

        reproducir();



    }


    public Audio3(String song) throws Exception 
    {
        super("Audio TEC");

        tfCancion= new JTextField();
        bPlay = new JButton("Reproducir");
        bStop = new JButton("Stop");
        panel1 = new JPanel();
        panel2 = new JPanel();

        bPlay.addActionListener(this);
        bStop.addActionListener(this);

        panel1.setLayout(new GridLayout(2,1));
        panel2.setLayout(new FlowLayout());
        panel1.add(new JLabel("Cancion"));
        panel1.add(tfCancion);
        panel1.add(bPlay);
        panel1.add(bStop);

        panel2.add(panel1);
        add(panel2);


        reproducir(song);

        setSize(400,300);
        setVisible(true);

    } 

    private void reproducir() throws Exception 
    {
        // 1. Obtener el nombre de la cancion a reproducir
        String song = "Hotel California.wav";

        // 2. Relacionar el nombre de la cancion con un Archivo (File) wav
        songFile = new File(song);
        // 3. Preparar el Audio Stream del archivo de la cancion 
        audioStream = AudioSystem.getAudioInputStream(songFile);

        // 4. Reproducir

        clip = AudioSystem.getClip();
        clip.open(audioStream);
    //  while(true)
            clip.start();
    }

    private void reproducir(String song) throws Exception 
    {
        // 1. Obtener el nombre de la cancion a reproducir
    //  String song = "Last_Nite.wav";

        // 2. Relacionar el nombre de la cancion con un Archivo (File) wav
        songFile = new File(song);
        // 3. Preparar el Audio Stream del archivo de la cancion 
        audioStream = AudioSystem.getAudioInputStream(songFile);

        // 4. Reproducir

        clip = AudioSystem.getClip();
        clip.open(audioStream);
    //  while(true)
            clip.start();
    }

    public void actionPerformed(ActionEvent e)
    {
        if(e.getSource() == bPlay)
        {
            clip.start();
        }
        if(e.getSource() == bStop)
        {
            clip.stop();
        }
    }

    public static void main(String args[]) throws Exception
    {
        //Audio3 audio = new Audio3();
        Audio3 audio = new Audio3("Hotel California.wav");

    }
}

0 个答案:

没有答案