简单音乐播放功能,用于背景音乐。功能简单:
1、点击播放按钮播放音乐,播放完一首音乐后,等待30秒后,继续播放下一首音乐,也就是3首背景音乐连续播放;
2、点击停止按钮,停止播放音乐,不再播放音乐。
就这么2个功能,不要再多的功能了,不要发一些过长、过复杂的代码。
1、点击播放按钮播放音乐,播放完一首音乐后,等待30秒后,继续播放下一首音乐,也就是3首背景音乐连续播放;
2、点击停止按钮,停止播放音乐,不再播放音乐。
就这么2个功能,不要再多的功能了,不要发一些过长、过复杂的代码。
解决方案 »
- 关于jpcap的问题。
- 通过java application 怎样动态的生成界面上的控件?
- anon-access=read只用小乌龟,已经设置了选项,但为什么还可写呢?
- 请教:类型转换的问题
- 哪位能告诉我这段代码的控件为什么不能显示出来???谢谢
- 一个关于于util包中integer类的问题
- ======= 急!全路径搜索问题!============
- 请教如何编译jasper 文件(用于jasperreport)
- 郁闷中!!
- 找个MM 吧!
- 我现在需要在JPane中弹出一个JDialog,然后又把这个JPanel放到另外一个JDialog中,该怎么弄?
- 求助servlet怎么配置,更具体点是web-xml怎么配置
import java.applet.*;
import java.awt.event.*;
import java.awt.*;public class PlayAudio extends Applet
implements ActionListener{
AudioClip audio;
Button btExit,btOpen,btPlay,btLoop,btStop;
/**
*<br>方法说明:初始化Applet
*<br>输入参数:
*<br>返回类型:
*/
public void init() {
//加载声音文件
audio = getAudioClip(getDocumentBase(),"img/1.mid");//这里放上你加在新建文件夹里面的歌曲名称
//构造按钮
setLayout(new FlowLayout());
btPlay=new Button("Play");
btPlay.addActionListener(this);
btLoop=new Button("Loop");
btLoop.addActionListener(this);
btStop=new Button("Stop");
btStop.addActionListener(this); //给Play按钮添加一个监听事件
//将按钮添加到Applet中
add(btPlay);
add(btLoop);
add(btStop);}public void actionPerformed(ActionEvent e) { //如果点击的是Play按钮
if (e.getSource()==btPlay) {
play();
}
//如果点击的是loop按钮
if (e.getSource()==btLoop) {
loop();
}
//如果点击的是stop按钮
if (e.getSource()==btStop) {
stop();
}
}
/**
*<br>方法说明:播放声音
*<br>输入参数:
*<br>返回类型:
*/
public void play(){
if (audio!=null) stop();
audio.play();
}
/**
*<br>方法说明:循环播放声音
*<br>输入参数:
*<br>返回类型:
*/
public void loop(){
if (audio!=null)
audio.loop();
}
/**
*<br>方法说明:停止播放声音
*<br>输入参数:
*<br>返回类型:
*/
public void stop(){
if (audio!=null)
audio.stop();
}
}
谢谢你啊,你发的代码好像是在网页中的,AudioClip 出错,我不是做网页用的,我是想要一个运行程序,带有背景音乐,就这么简单。
谢谢你啊,你发的代码好像是在网页中的,AudioClip 出错,我不是做网页用的,我是想要一个运行程序,带有背景音乐,就这么简单。
import java.applet.AudioClip;
import java.awt.Button;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class AudioApplet extends Applet implements ActionListener { AudioClip ac;
Button btnStart=new Button("开始");
Button btnPause=new Button("暂停");
Button btnContine=new Button("继续");
public void init(){
ac=getAudioClip(getDocumentBase(), "1.au");
btnStart.addActionListener(this);
btnPause.addActionListener(this);
btnContine.addActionListener(this);
this.add(btnStart);
this.add(btnPause);
this.add(btnContine);
}
public void stop(){
if(ac!=null){
ac.stop();
}
}
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(ac==null){
System.out.println("AudioClip object is not created");
return;
}
Object cmd=e.getSource();
if(cmd==btnStart){
ac.play();
ac.loop();
}else if(cmd==btnPause){
ac.stop();
}else if(cmd==btnContine){
ac.play();
ac.loop();
}
}}
一样, 现在连applet都忘了该怎么写了。~~ 看见完整的代码可真不容易。~ -_-#
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.net.*;
import java.applet.*;
public class Sound
{
public static void main(String args[])
{
new MusicWindow();
}}
class MusicWindow extends JFrame implements ActionListener
{
JButton [] musicButton;
File musicFile;
URI uri;
URL url;
AudioClip clip;
String[] musicName = {"sound/1.mid", "sound/2.mid", "sound/3.mid"};
MusicWindow()
{
musicButton = new JButton[2];
Box musicBox = Box.createHorizontalBox();
musicButton[0] = new JButton("play");
musicButton[0].addActionListener(this);
musicBox.add(musicButton[0]);
musicButton[1] = new JButton("stop");
musicButton[1].addActionListener(this);
musicBox.add(musicButton[1]);
setLayout(new FlowLayout());
add(musicBox);
setBounds(120,125,250,150);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e)
{
JButton button = (JButton)e.getSource();
if ( clip != null)
clip.stop();
for ( int i = 0; i < musicButton.length; i++ )
{
if ( button == musicButton[0] )
{
for ( int j = 0; j < 3; j++ )
{
musicFile = new File(musicName[j]);
uri = musicFile.toURI();
try
{
url = uri.toURL();
}
catch(Exception exp)
{
}
clip = Applet.newAudioClip(url);
clip.play();
}
}
else
{
clip.stop();
}
}
}
}不知为何stop方法无效
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.*;
import javax.swing.*;
import javax.media.*;
public class Music extends JFrame {
private Player player; // 播放器对象
private Container container; // 主容器
private URL fileURL; //媒体文件URL地址
private JButton bp=new JButton("播放");
private JButton bs=new JButton("停止");
Music(){
container = getContentPane(); //得到窗口容器
setLayout(new GridLayout(1,2));
container.add(bp);
container.add(bs); setSize(300, 200); //设置窗口大小
setVisible(true); //设置窗口为可视
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序
fileURL=getClass().getResource("m1.wav");
MediaLocator mediaLocator = new MediaLocator(fileURL); //媒体定位器
try {
player = Manager.createPlayer(mediaLocator); //得到播放器实例
} catch (Exception ex) {
ex.printStackTrace();
}
bp.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
player.start();
}
});
bs.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
player.stop();
}
});
} public static void main(String args[]) {
new Music();
}
} 够简单吧,不过不能等待30秒,循环播放。按9楼所说的,加个定时器,然后把音乐文件放进数组,循环播放即可
/**
*AePlayWave.java
* Created on 4:14:40 PM Feb 20, 2009
*@author Quasar063501
*@version 0.1
*
*/
import java.io.File;
import java.io.IOException;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.FloatControl;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.SourceDataLine;
import javax.sound.sampled.UnsupportedAudioFileException;
public class AePlayWave extends Thread {
private String filename;
private Position curPosition;
private final int EXTERNAL_BUFFER_SIZE = 524288; // 128Kb
enum Position {
LEFT, RIGHT, NORMAL
};
public AePlayWave(String wavfile) {
filename = wavfile;
curPosition = Position.NORMAL;
}
public AePlayWave(String wavfile, Position p) {
filename = wavfile;
curPosition = p;
}
public void run() {
File soundFile = new File(filename);
if (!soundFile.exists()) {
System.err.println("Wave file not found: " + filename);
return;
}
AudioInputStream audioInputStream = null;
try {
audioInputStream = AudioSystem.getAudioInputStream(soundFile);
} catch (UnsupportedAudioFileException e1) {
e1.printStackTrace();
return;
} catch (IOException e1) {
e1.printStackTrace();
return;
}
AudioFormat format = audioInputStream.getFormat();
SourceDataLine auline = null;
DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
try {
auline = (SourceDataLine) AudioSystem.getLine(info);
auline.open(format);
} catch (LineUnavailableException e) {
e.printStackTrace();
return;
} catch (Exception e) {
e.printStackTrace();
return;
}
if (auline.isControlSupported(FloatControl.Type.PAN)) {
FloatControl pan = (FloatControl) auline
.getControl(FloatControl.Type.PAN);
if (curPosition == Position.RIGHT)
pan.setValue(1.0f);
else if (curPosition == Position.LEFT)
pan.setValue(-1.0f);
}
auline.start();
int nBytesRead = 0;
byte[] abData = new byte[EXTERNAL_BUFFER_SIZE];
try {
while (nBytesRead != -1) {
nBytesRead = audioInputStream.read(abData, 0, abData.length);
if (nBytesRead >= 0)
auline.write(abData, 0, nBytesRead);
}
} catch (IOException e) {
e.printStackTrace();
return;
} finally {
auline.drain();
auline.close();
}
}
} 测试函数:/**
*TestWav.java
* Created on 4:22:18 PM Feb 20, 2009
*@author Quasar063501
*@version 0.1
*
*/
public class TestWav {
public static void main(String args[]) {
AePlayWave p = new AePlayWave("src/bg.wav");
p.start();
}
}
14楼 weizhaozhe :
你发的这个代码有错误,还那么长,谢谢。9楼、11楼:
代码是简单,也能用,可怎么让音乐循环啊?怎么添加定时器?我不会
java不能播放midi格式的文件????????????????????????????Error: Unable to prefetch com.sun.media.content.audio.midi.Handler$MidiController@eb017eError: Unable to prefetch com.sun.media.content.audio.midi.Handler$MidiController@b8f82d
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.media.*;
import javax.sound.midi.MidiSystem;
import javax.sound.midi.Sequence;
import javax.sound.midi.Sequencer;
import javax.sound.midi.MidiSystem;
import javax.sound.midi.Track;
public class Music extends JFrame {
private JMenuBar menuBar = new JMenuBar();
private JMenu mMusic=new JMenu("音乐");
private JCheckBoxMenuItem
mMusic0 = new JCheckBoxMenuItem("m1"),
mMusic1 = new JCheckBoxMenuItem("m2"),
mMusic2 = new JCheckBoxMenuItem("m3"),
mLoop = new JCheckBoxMenuItem("循环播放", true),
mStop=new JCheckBoxMenuItem("停止播放"); private Sequencer sequencer;
Sequence seq;
Music(){
menuBar.add(mMusic);
mMusic.add(mMusic0);
mMusic.add(mMusic1);
mMusic.add(mMusic2);
mMusic.addSeparator();
mMusic.add(mLoop);
mMusic.add(mStop);
setJMenuBar(menuBar);
setLocation((Toolkit.getDefaultToolkit().getScreenSize().width - getSize().width) / 2,
(Toolkit.getDefaultToolkit().getScreenSize().height - getSize().height) / 2);
try {
sequencer = MidiSystem.getSequencer();
sequencer.open();
seq = new Sequence(Sequence.PPQ, 4);
sequencer.setSequence(seq);
sequencer.setTempoInBPM(220);
}
catch (Exception ex) {
ex.printStackTrace();
}
mMusic0.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
mMusic0.setState(true);
mMusic1.setState(false);
mMusic2.setState(false);
mLoop.setState(false);
mStop.setState(false);
mMusic0.setEnabled(false);
mMusic1.setEnabled(true);
mMusic2.setEnabled(true);
mLoop.setEnabled(true);
mStop.setEnabled(true);
playMusic(0);
} });
mMusic1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
mMusic0.setState(false);
mMusic1.setState(true);
mMusic2.setState(false);
mLoop.setState(false);
mStop.setState(false);
mMusic0.setEnabled(true);
mMusic1.setEnabled(false);
mMusic2.setEnabled(true);
mLoop.setEnabled(true);
mStop.setEnabled(true);
playMusic(1);
} });
mMusic2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
mMusic0.setState(false);
mMusic1.setState(false);
mMusic2.setState(true);
mLoop.setState(false);
mStop.setState(false);
mMusic0.setEnabled(true);
mMusic1.setEnabled(true);
mMusic2.setEnabled(false);
mLoop.setEnabled(true);
mStop.setEnabled(true);
playMusic(2);
} });
mLoop.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
mMusic0.setState(false);
mMusic1.setState(false);
mMusic2.setState(false);
mLoop.setState(true);
mStop.setState(false);
mMusic0.setEnabled(true);
mMusic1.setEnabled(true);
mMusic2.setEnabled(true);
mLoop.setEnabled(false);
mStop.setEnabled(true);
for(int i=0;i<3;i++){
playMusic(i);
}
}
});
mStop.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
mMusic0.setState(false);
mMusic1.setState(false);
mMusic2.setState(false);
mLoop.setState(false);
mStop.setState(true);
mMusic0.setEnabled(true);
mMusic1.setEnabled(true);
mMusic2.setEnabled(true);
mLoop.setEnabled(true);
mStop.setEnabled(false); }
});
setSize(300, 200); //设置窗口大小
setVisible(true); //设置窗口为可视
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序
}
public void playMusic(int number){
if(number==0)
sequencer.start();
if(number==1)
sequencer.start();
if(number==2)
sequencer.start();
}
public static void main(String args[]) {
new Music();
}
}
上面是小弟编的代码,请各位高手大虾帮我修改一下,播放电脑上的.mid音乐,打包成jar文件同样可以运行播放音乐,而且能够单曲循环播放、全部循环播放,不胜感激
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.media.*;
import javax.sound.midi.MidiSystem;
import javax.sound.midi.Sequence;
import javax.sound.midi.Sequencer;
import javax.sound.midi.MidiSystem;
import javax.sound.midi.Track;
public class Music extends JFrame {
private JMenuBar menuBar = new JMenuBar();
private JMenu mMusic=new JMenu("音乐");
private JCheckBoxMenuItem
mMusic0 = new JCheckBoxMenuItem("m1"),
mMusic1 = new JCheckBoxMenuItem("m2"),
mMusic2 = new JCheckBoxMenuItem("m3"),
mLoop = new JCheckBoxMenuItem("循环播放", true),
mStop=new JCheckBoxMenuItem("停止播放"); private Sequencer sequencer;
Sequence seq;
Music(){
menuBar.add(mMusic);
mMusic.add(mMusic0);
mMusic.add(mMusic1);
mMusic.add(mMusic2);
mMusic.addSeparator();
mMusic.add(mLoop);
mMusic.add(mStop);
setJMenuBar(menuBar);
setLocation((Toolkit.getDefaultToolkit().getScreenSize().width - getSize().width) / 2,
(Toolkit.getDefaultToolkit().getScreenSize().height - getSize().height) / 2);
try {
sequencer = MidiSystem.getSequencer();
sequencer.open();
seq = new Sequence(Sequence.PPQ, 4);
sequencer.setSequence(seq);
sequencer.setTempoInBPM(220);
}
catch (Exception ex) {
ex.printStackTrace();
}
mMusic0.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
mMusic0.setState(true);
mMusic1.setState(false);
mMusic2.setState(false);
mLoop.setState(false);
mStop.setState(false);
mMusic0.setEnabled(false);
mMusic1.setEnabled(true);
mMusic2.setEnabled(true);
mLoop.setEnabled(true);
mStop.setEnabled(true);
playMusic(0);
} });
mMusic1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
mMusic0.setState(false);
mMusic1.setState(true);
mMusic2.setState(false);
mLoop.setState(false);
mStop.setState(false);
mMusic0.setEnabled(true);
mMusic1.setEnabled(false);
mMusic2.setEnabled(true);
mLoop.setEnabled(true);
mStop.setEnabled(true);
playMusic(1);
} });
mMusic2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
mMusic0.setState(false);
mMusic1.setState(false);
mMusic2.setState(true);
mLoop.setState(false);
mStop.setState(false);
mMusic0.setEnabled(true);
mMusic1.setEnabled(true);
mMusic2.setEnabled(false);
mLoop.setEnabled(true);
mStop.setEnabled(true);
playMusic(2);
} });
mLoop.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
mMusic0.setState(false);
mMusic1.setState(false);
mMusic2.setState(false);
mLoop.setState(true);
mStop.setState(false);
mMusic0.setEnabled(true);
mMusic1.setEnabled(true);
mMusic2.setEnabled(true);
mLoop.setEnabled(false);
mStop.setEnabled(true);
for(int i=0;i<3;i++){
playMusic(i);
}
}
});
mStop.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
mMusic0.setState(false);
mMusic1.setState(false);
mMusic2.setState(false);
mLoop.setState(false);
mStop.setState(true);
mMusic0.setEnabled(true);
mMusic1.setEnabled(true);
mMusic2.setEnabled(true);
mLoop.setEnabled(true);
mStop.setEnabled(false); }
});
setSize(300, 200); //设置窗口大小
setVisible(true); //设置窗口为可视
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序
}
public void playMusic(int number){
if(number==0)
sequencer.start();
if(number==1)
sequencer.start();
if(number==2)
sequencer.start();
}
public static void main(String args[]) {
new Music();
}
}
上面是小弟编的代码,请各位高手大虾帮我修改一下,播放电脑上的.mid音乐,打包成jar文件同样可以运行播放音乐,而且能够单曲循环播放、全部循环播放,小弟不胜感激
import java.awt.event.*;
import java.awt.*;
/**
* <p>Title: Applet播放声音文件</p>
* <p>Description: 使用AudioClip类加载声音文件,并当鼠标点击后开始播放</p>
*/
public class PlayAudio extends Applet
implements ActionListener{
AudioClip audio;
Button btExit,btOpen,btPlay,btLoop,btStop;
/**
*<br>方法说明:初始化Applet
*<br>输入参数:
*<br>返回类型:
*/
public void init() {
//加载声音文件
audio = getAudioClip(getDocumentBase(),"img/1.mid");
//构造按钮
setLayout(new FlowLayout()); //使用布局管理器
btPlay=new Button("Play"); //定义Play按钮
btPlay.addActionListener(this); //给Play按钮添加一个监听事件
btLoop=new Button("Loop"); //定义Play按钮
btLoop.addActionListener(this); //给Play按钮添加一个监听事件
btStop=new Button("Stop"); //定义Play按钮
btStop.addActionListener(this); //给Play按钮添加一个监听事件
//将按钮添加到Applet中
add(btPlay);
add(btLoop);
add(btStop);}public void actionPerformed(ActionEvent e) { //如果点击的是Play按钮
if (e.getSource()==btPlay) {
play();
}
//如果点击的是loop按钮
if (e.getSource()==btLoop) {
loop();
}
//如果点击的是stop按钮
if (e.getSource()==btStop) {
stop();
}
}
/**
*<br>方法说明:播放声音
*<br>输入参数:
*<br>返回类型:
*/
public void play(){
if (audio!=null) stop();
audio.play();
}
/**
*<br>方法说明:循环播放声音
*<br>输入参数:
*<br>返回类型:
*/
public void loop(){
if (audio!=null)
audio.loop();
}
/**
*<br>方法说明:停止播放声音
*<br>输入参数:
*<br>返回类型:
*/
public void stop(){
if (audio!=null)
audio.stop();
}
}
private Sequence sequence;try
{ url = getClass().getResource("文件名");
sequencer= MidiSystem.getSequencer(false);
sequencer.open();
sequence= MidiSystem.getSequence(url);
sequencer.setSequence(sequence);
sequencer.start();
}
catch(Exception e){
e.printStackTrace();
}使用sequencer可以播放mimd格式的音乐,把上面的代码放到播放按钮上即可。
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.media.*;
import javax.sound.midi.MidiSystem;
import javax.sound.midi.Sequence;
import javax.sound.midi.Sequencer;
import javax.sound.midi.MidiSystem;
import javax.sound.midi.Track;
public class Music extends JFrame {
private JMenuBar menuBar = new JMenuBar();
private JMenu mMusic=new JMenu("音乐");
private JCheckBoxMenuItem
mMusic0 = new JCheckBoxMenuItem("m1"),
mMusic1 = new JCheckBoxMenuItem("m2"),
mMusic2 = new JCheckBoxMenuItem("m3"),
mLoop = new JCheckBoxMenuItem("循环播放", true),
mStop=new JCheckBoxMenuItem("停止播放"); private Sequencer sequencer;
Sequence seq;
private Sequencer sequencer;
private Sequence sequence;
Music(){
menuBar.add(mMusic);
mMusic.add(mMusic0);
mMusic.add(mMusic1);
mMusic.add(mMusic2);
mMusic.addSeparator();
mMusic.add(mLoop);
mMusic.add(mStop);
setJMenuBar(menuBar);
setLocation((Toolkit.getDefaultToolkit().getScreenSize().width - getSize().width) / 2,
(Toolkit.getDefaultToolkit().getScreenSize().height - getSize().height) / 2);
try {
url = getClass().getResource("文件名");
sequencer= MidiSystem.getSequencer(false);
sequencer.open(); }
catch (Exception ex) {
ex.printStackTrace();
}
mMusic0.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
mMusic0.setState(true);
mMusic1.setState(false);
mMusic2.setState(false);
mLoop.setState(false);
mStop.setState(false);
mMusic0.setEnabled(false);
mMusic1.setEnabled(true);
mMusic2.setEnabled(true);
mLoop.setEnabled(true);
mStop.setEnabled(true);
try
{ sequence= MidiSystem.getSequence(url);
sequencer.setSequence(sequence);
sequencer.start();
}
catch(Exception e){
e.printStackTrace();
}
} });
mMusic1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
mMusic0.setState(false);
mMusic1.setState(true);
mMusic2.setState(false);
mLoop.setState(false);
mStop.setState(false);
mMusic0.setEnabled(true);
mMusic1.setEnabled(false);
mMusic2.setEnabled(true);
mLoop.setEnabled(true);
mStop.setEnabled(true);
playMusic(1);
} });
mMusic2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
mMusic0.setState(false);
mMusic1.setState(false);
mMusic2.setState(true);
mLoop.setState(false);
mStop.setState(false);
mMusic0.setEnabled(true);
mMusic1.setEnabled(true);
mMusic2.setEnabled(false);
mLoop.setEnabled(true);
mStop.setEnabled(true);
playMusic(2);
} });
mLoop.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
mMusic0.setState(false);
mMusic1.setState(false);
mMusic2.setState(false);
mLoop.setState(true);
mStop.setState(false);
mMusic0.setEnabled(true);
mMusic1.setEnabled(true);
mMusic2.setEnabled(true);
mLoop.setEnabled(false);
mStop.setEnabled(true);
for(int i=0;i<3;i++){
playMusic(i);
}
}
});
mStop.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
mMusic0.setState(false);
mMusic1.setState(false);
mMusic2.setState(false);
mLoop.setState(false);
mStop.setState(true);
mMusic0.setEnabled(true);
mMusic1.setEnabled(true);
mMusic2.setEnabled(true);
mLoop.setEnabled(true);
mStop.setEnabled(false); }
});
setSize(300, 200); //设置窗口大小
setVisible(true); //设置窗口为可视
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序
}
public void playMusic(int number){
if(number==0)
sequencer.start();
if(number==1)
sequencer.start();
if(number==2)
sequencer.start();
}
public static void main(String args[]) {
new Music();
}
}
把上面的代码稍加修改可以播放midi了,主要还是那几行代码。
如果要当背景音乐循环播放的话,而且再停顿30秒,可以使用Thread.sleep(30000)来停顿30秒,但会影响整个程序都停止,所以把背景音乐类继承成一个线程。停止播放使用sequencer.stop();怎么单曲循环、全部循环…………没试过,我现在去试试