当前位置:编程学习 > JAVA >>

点击按钮,播放音乐

下载的程序运行不成功,谁给提点修改意见?谢谢

/**
   处理点击按钮事件
*/

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.applet.*;
import java.io.File;

public class SimpleButtonTest
{
   public static void main(String[] args)
   {
      ButtonFrame frame = new ButtonFrame();
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setVisible(true);
   }
}

//   包含一个按钮的自定义框架类
class ButtonFrame extends JFrame
{
   public ButtonFrame()
   {
      setTitle("SimpleButtonTest");
      setSize(300,200);

      JButton button=new JButton("play");//事件源
      PlayListener listener=new PlayListener();//事件监听器
      button.addActionListener(listener);//注册
      //button.addActionListener(new PlayListener());//简写

      setLayout(new FlowLayout());
      add(button);
   }
}


//处理按钮的点击的事件监听器类
class PlayListener implements ActionListener
{
    public void actionPerformed(ActionEvent event)
    {
   ClassLoader classLoader=this.getClass().getClassLoader();
   AudioClip audio=JApplet.newAudioClip(classLoader.getResource("F:/love.mid"));
       audio.play();
    }
 }

--------------------编程问答-------------------- 应该使用javax.sound 播放 --------------------编程问答--------------------
引用 1 楼 huntor 的回复:
应该使用javax.sound 播放


 audio.play()换成javax.sound()?没有这个方法吧? --------------------编程问答--------------------
引用 2 楼 u011175134 的回复:
Quote: 引用 1 楼 huntor 的回复:

应该使用javax.sound 播放


 audio.play()换成javax.sound()?没有这个方法吧?

javax.sound是Java音频开发方面的扩展包 --------------------编程问答-------------------- 应该使用javax.sound 播放  --------------------编程问答-------------------- F:/love.mid要放在当前工作目录。直接改为“love.mid”应该可以。 --------------------编程问答--------------------
引用 4 楼 xue08161981 的回复:
应该使用javax.sound 播放 


请问如何添加javax.sound到源代码里啊?我还是不明白,请指教 --------------------编程问答--------------------
引用 5 楼 ivyvae 的回复:
F:/love.mid要放在当前工作目录。直接改为“love.mid”应该可以。


你指讲音乐love.mid放在MyEclipse安装目录里吗?不行哦 --------------------编程问答--------------------
import java.io.*;
import javax.sound.midi.*;
   
public class MidiSoundTest {
   private static Sequencer midiPlayer;
   
   // testing main method
   public static void main(String[] args) {
      startMidi("song1.mid");     // start the midi player
      try {
         Thread.sleep(10000);   // delay
      } catch (InterruptedException e) { }
      System.out.println("faster");
      midiPlayer.setTempoFactor(2.0F);   // >1 to speed up the tempo
      try {
         Thread.sleep(10000);   // delay
      } catch (InterruptedException e) { }
   
      // Do this on every move step, you could change to another song
      if (!midiPlayer.isRunning()) {  // previous song finished
         // reset midi player and start a new song
         midiPlayer.stop();
         midiPlayer.close();
         startMidi("song2.mid");
      }
   }
   
   public static void startMidi(String midFilename) {
      try {
         File midiFile = new File(midFilename);
         Sequence song = MidiSystem.getSequence(midiFile);
         midiPlayer = MidiSystem.getSequencer();
         midiPlayer.open();
         midiPlayer.setSequence(song);
         midiPlayer.setLoopCount(0); // repeat 0 times (play once)
         midiPlayer.start();
      } catch (MidiUnavailableException e) {
         e.printStackTrace();
      } catch (InvalidMidiDataException e) {
         e.printStackTrace();
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}
--------------------编程问答--------------------
引用 7 楼 u011175134 的回复:
Quote: 引用 5 楼 ivyvae 的回复:

F:/love.mid要放在当前工作目录。直接改为“love.mid”应该可以。


你指讲音乐love.mid放在MyEclipse安装目录里吗?不行哦


是资源文件夹下。
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,