简单音乐播放功能,用于背景音乐。功能简单:
1、点击播放按钮播放音乐,播放完一首音乐后,等待30秒后,继续播放下一首音乐,也就是3首背景音乐连续播放;
2、点击停止按钮,停止播放音乐,不再播放音乐。
就这么2个功能,不要再多的功能了,不要发一些过长、过复杂的代码。

解决方案 »

  1.   

    这个可以的,LZ你已经发过一次了。以后别急着结贴,可以先说好的。//新建一个img文件夹,里面放上要播放的音乐。mid类型的吧。
    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();
         
    }

      

  2.   


    谢谢你啊,你发的代码好像是在网页中的,AudioClip 出错,我不是做网页用的,我是想要一个运行程序,带有背景音乐,就这么简单。
      

  3.   


    谢谢你啊,你发的代码好像是在网页中的,AudioClip 出错,我不是做网页用的,我是想要一个运行程序,带有背景音乐,就这么简单。
      

  4.   

    import java.applet.Applet;
    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();
            }
    }}
      

  5.   


    一样, 现在连applet都忘了该怎么写了。~~ 看见完整的代码可真不容易。~   -_-#
      

  6.   

    “定时器+媒体播放API”应该就可以解决了,代码还是自己研究吧,别人写的不一定适合你啊
      

  7.   

    import java.awt.*;
    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方法无效
      

  8.   


    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楼所说的,加个定时器,然后把音乐文件放进数组,循环播放即可
      

  9.   

    不管是APPLET还是SWING原理一样的
      

  10.   

    这个好用!
    /**
     *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();
     }
    }
      

  11.   

    我用不到applet。
    14楼 weizhaozhe :
    你发的这个代码有错误,还那么长,谢谢。9楼、11楼:
    代码是简单,也能用,可怎么让音乐循环啊?怎么添加定时器?我不会
      

  12.   


    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
      

  13.   

    采用midi, sequncer , sequnce可以实现midi音乐的播放
      

  14.   


    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文件同样可以运行播放音乐,而且能够单曲循环播放、全部循环播放,不胜感激
      

  15.   


    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文件同样可以运行播放音乐,而且能够单曲循环播放、全部循环播放,小弟不胜感激
      

  16.   

    是啊,我没写播放midi音乐文件的代码,不知怎么播放22楼说sequncer , sequnce可以实现midi音乐的播放,问题不知怎么播放,而且还间断的循环播放
      

  17.   

    import java.applet.*;
    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();
         
    }
      

  18.   

    private Sequencer sequencer;
    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格式的音乐,把上面的代码放到播放按钮上即可。
      

  19.   


    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();怎么单曲循环、全部循环…………没试过,我现在去试试