Java没有为按钮播放声音

Java没有为按钮播放声音,java,audio,jbutton,Java,Audio,Jbutton,我创建了一个类,在单击按钮时播放声音 代码如下: public void playSound() { try { AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File("beep-1.wav")); Clip clip = AudioSystem.getClip( ); clip.op

我创建了一个
,在单击按钮时播放声音

代码如下:

public void playSound()
    {
        try 
        {
            AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File("beep-1.wav"));
            Clip clip = AudioSystem.getClip( );
            clip.open(audioInputStream);
            clip.start( );
        }
        catch(Exception e)
        {
            System.out.println("Error with playing sound.");
        }
    }
当我想将它实现到
按钮Listener
方法中时,似乎没有声音播放

这里是
按钮列表器
代码:

private class ButtonListener implements ActionListener
    {
        public void actionPerformed(ActionEvent e) 
        {
            if (replayButton == e.getSource()) 
            {
                playSound();
            }
        }
    }
代码怎么了

编辑:

基本上,我正在尝试创建一个简单的记忆游戏,我想在单击按钮时为按钮添加声音

已解决:


似乎我从下载的音频文件有问题,因此,音频文件无法播放@_@

请问有没有stacktrace???您是否已将侦听器添加到按钮

不管怎么说,标准方式在跨平台瞄准时有一些缺陷。使用Java媒体框架。

使用

SwingUtilities.invokeLater(new Runnable() {
    @Override
    public void run() {
        playSound();
    }
});
这应该起作用:

public class Test extends JFrame {

    public static void main(String[] args) {
        new Test();
    }

    public Test() {
        JButton button = new JButton("play");
        button.addActionListener(new  ActionListener() {
        public void actionPerformed(ActionEvent e) {
                playSound();
        }});
        this.getContentPane().add(button);
        this.setVisible(true);
    }

    public void playSound() {
        try {
            AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File("beep.wav"));
            Clip clip = AudioSystem.getClip( );
            clip.open(audioInputStream);
            clip.start( );
        }
        catch(Exception e)  {
            e.printStackTrace( );
        }
    }
}
请注意,在播放文件期间,GUI将不负责。在你的听众中使用Joop Eggen的方法来纠正这个问题。它将异步播放文件

SwingUtilities.invokeLater(new Runnable() {
    public void run() {
        playSound();
    }
});

我什么都不知道(你的扬声器开着吗?;)是的。。。我已经就此提出了问题,但没有得到任何答案:/