Java 播放音频文件

简单的播放音频,可以使用Applet类的newAudioClip()方法创建音频剪辑对象,然后调用该对象的play()方法播放音频。

语法:newAudioClip(URL url)

其中,参数url是指音频文件的URL路径。

该方法将返回AudioClip类的实例对象,该对象可以通过play()stop()loop()方法实现音频的播放、停止和循环播放。AudioClip类位于java.awt包中。

import java.util.*;
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.filechooser.*;
import javax.swing.table.*;
import java.net.*;

public class t3 extends JFrame{
	
	private static final long serialVersionUID = 1L; 
	private JPanel jContentPane = null;
	private JTextField filePath = null;
	private JButton openFile = null;
	private JButton playButton = null;
	private File selectedFile;
	private AudioClip audioClip;

	//显示选择的音频文件
	private JTextField getJTextField() {
		
		if (filePath == null) {
			filePath = new JTextField();
			filePath.setPreferredSize(new Dimension(200, 20));//设置文本框的大小
			filePath.setBackground(Color.WHITE);
			filePath.setEditable(false);//设置文本框不能进行编辑
		}
		return filePath;
	}
	
	// 获取选择音频文件按钮
	private JButton getOpenFile() {
		
		if (openFile == null) {
			openFile = new JButton();
			openFile.setText("选择音频");
			openFile.addActionListener(new ActionListener() {
				
				public void actionPerformed(ActionEvent e) {
					JFileChooser fileChooser = new JFileChooser();//文件选择器
					fileChooser.setFileFilter(new FileNameExtensionFilter("支持的音频文件(*.MP3、*.WAV)", "wav", "WAV", "mp3", "MP3"));//设置支持选择的音频文件格式
					fileChooser.showOpenDialog(t3.this);
					selectedFile = fileChooser.getSelectedFile();//获取选择的音频文件
					filePath.setText(selectedFile.getAbsolutePath());//文本框显示选择的音频文件
				}
			});
		}
		return openFile;
	}
	
	// 获取播放按钮
	private JButton getPlayButton() {
		if (playButton == null) {
			playButton = new JButton();
			playButton.setText("播放音频");
			playButton.addActionListener(new ActionListener() {
						
						public void actionPerformed(ActionEvent e) {
							
							if (selectedFile != null) {
								
								try {
									if (audioClip != null) {//如果有音频在播放
										audioClip.stop();//停止当前音频的播放
									}
									audioClip = Applet.newAudioClip(selectedFile.toURI().toURL());//获取选择的音频
									audioClip.play();//播放音频
								} catch (MalformedURLException e1) {
									e1.printStackTrace();
								}
							}
						}
					});
		}
		return playButton;
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		t3 test = new t3();
		test.setVisible(true);

	}
	
	public t3() {
		super();
		setTitle("Hern");
		setBounds(400, 400, 400, 400);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setContentPane(getJContentPane());
		
	}
	
	
	// 初始化内容面板的方法
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jContentPane = new JPanel();
			jContentPane.setLayout(new FlowLayout());
			jContentPane.add(getJTextField(), null);
			jContentPane.add(getOpenFile(), null);
			jContentPane.add(getPlayButton(), null);
		}
		return jContentPane;
	}

}

猜你喜欢

转载自blog.csdn.net/qq_36761831/article/details/81585865