62,614
社区成员
发帖
与我相关
我的任务
分享
package com.han;
import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.SpringLayout;
import javax.swing.filechooser.FileNameExtensionFilter;
@SuppressWarnings("serial")
public class MusicPlay extends JFrame {
private AudioClip audioClip;
public MusicPlay() {
// TODO Auto-generated constructor stub
/* prepare the components needed to display */
Container container = getContentPane();
SpringLayout springLayout = new SpringLayout();
container.setLayout(springLayout);
final JTextField textField = new JTextField();
JButton buttonSelect = new JButton("选择文件");
JButton buttonPlay = new JButton("播放");
JButton buttonStop = new JButton("停止");
JButton buttonLoop = new JButton("循环");
/* use the SpringLayout to layout the components */
container.add(buttonLoop);
springLayout.putConstraint(SpringLayout.EAST, buttonLoop, -5, SpringLayout.EAST, container);
springLayout.putConstraint(SpringLayout.NORTH, buttonLoop, 5, SpringLayout.NORTH, container);
container.add(buttonStop);
springLayout.putConstraint(SpringLayout.NORTH, buttonStop, 0, SpringLayout.NORTH, buttonLoop);
springLayout.putConstraint(SpringLayout.EAST, buttonStop, -5, SpringLayout.WEST, buttonLoop);
container.add(buttonPlay);
springLayout.putConstraint(SpringLayout.NORTH, buttonPlay, 0, SpringLayout.NORTH, buttonStop);
springLayout.putConstraint(SpringLayout.EAST, buttonPlay, -5, SpringLayout.WEST, buttonStop);
container.add(buttonSelect);
springLayout.putConstraint(SpringLayout.NORTH, buttonSelect, 0, SpringLayout.NORTH, buttonPlay);
springLayout.putConstraint(SpringLayout.EAST, buttonSelect, -5, SpringLayout.WEST, buttonPlay);
container.add(textField);
springLayout.putConstraint(SpringLayout.NORTH, textField, 0, SpringLayout.NORTH, buttonSelect);
springLayout.putConstraint(SpringLayout.EAST, textField, -5, SpringLayout.WEST, buttonSelect);
springLayout.putConstraint(SpringLayout.WEST, textField, 5, SpringLayout.WEST, container);
springLayout.putConstraint(SpringLayout.SOUTH, textField, 0, SpringLayout.SOUTH, buttonSelect);
/* add Listeners */
buttonSelect.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
JFileChooser fileChooser = new JFileChooser();
File dir = new File("C:\\Users\\Public\\Music\\Sample Music");
if (dir.exists()) {
fileChooser.setCurrentDirectory(dir);
} else {
System.out.println("找不到程序预指定的当前目录,当前目录将被" +
"设定为系统相关的默认目录");
fileChooser.setCurrentDirectory(null);
}
FileNameExtensionFilter filter = new FileNameExtensionFilter(
"支持的音频文件(*.mid; *.wav; *.au;)", "mid", "wav", "au");
FileNameExtensionFilter filter2 = new FileNameExtensionFilter(
"支持的音频文件(*.mp3; *.mid; *.wav; *.au;)", "mp3", "mid", "wav", "au");
fileChooser.addChoosableFileFilter(filter);
fileChooser.addChoosableFileFilter(filter2);
fileChooser.setFileFilter(filter);
int i = fileChooser.showOpenDialog(getContentPane());
if (i == JFileChooser.APPROVE_OPTION) {
File file = fileChooser.getSelectedFile();
textField.setText(file.getPath());
try {
URL audioFilePath = file.toURI().toURL();
audioClip = Applet.newAudioClip(audioFilePath);
} catch (MalformedURLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
});
buttonPlay.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
audioClip.play();
}
});
buttonStop.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
audioClip.stop();
}
});
buttonLoop.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
audioClip.loop();
}
});
/* initialize the frame */
setTitle("音频播放");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 600, 75);
setVisible(true);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new MusicPlay();
}
}