即使我的代码基于有效的示例,我的wav声音也不会播放。我不知道我的错误在哪里。我在互联网上发现了以下代码示例:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.io.*;
class Testing extends JFrame implements ActionListener
{
  JButton btn = new JButton("Play Sound");
  File wavFile = new File("c:\\Windows\\media\\ding.wav");
  AudioClip sound;
  public Testing()
  {
    setSize(300,100);
    setLocation(400,300);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    JPanel jp = new JPanel();
    btn.addActionListener(this);
    jp.add(btn);
    getContentPane().add(jp);
    pack();
    try{sound = Applet.newAudioClip(wavFile.toURL());}
    catch(Exception e){e.printStackTrace();}
  }
  public void actionPerformed(ActionEvent ae){sound.play();}
  public static void main(String args[]){new Testing().setVisible(true);}
}

它工作正常。我创建了一个WavReader类,它将加载AudioClip声音。我的按钮具有WavReader属性。我想做的是通过Button的MouseEnetered事件播放WavReader声音。这是我的WavReader类:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.io.*;

public class WavReader {

  File wavFile;
  public AudioClip sound;

  public WavReader(String file) {

    wavFile = new File(file);

    try {
      sound = Applet.newAudioClip(wavFile.toURL());
    }
    catch(Exception e) {
      e.printStackTrace();
    }

  }


  public void playSound() {
  sound.play();

  }

  public void stopSound() {
     sound.stop();
  }

}

这是我的个性化按钮的一部分:
public class ButtonMenu extends JButton{

  public ButtonMenu() {

    private WavReader reader = new WavReader("blabla.wav");

   addMouseListener(new MouseAdapter() {
 public void mouseEntered(MouseEvent e) {
   setForeground(Color.red);
   reader.playSound();
 }

      public void mouseExited(MouseEvent e) {
       setForeground(Color.white);
          reader.stopSound();
        }
      }   // end MouseAdaptater
  );  // end MouseListener
 }

}

运行时没有错误,但是我的声音不会播放。你能告诉我做错了什么吗?

我可以看到的唯一区别是,这里的AudioClip属性不是任何JFrame的一部分,而是WavReader类的一部分,而WavReader类是Button的一部分。

最佳答案

我不确定代码的外观,但是您是否导入了正确的库来播放音频?

08-17 10:10