无法在Java中播放JComboBox的声音

时间:2014-11-22 00:14:54

标签: java audio

从JComboBox中选择并按下按钮后,我无法播放声音文件。这个程序的目的就是做到这一点。但是,按下按钮后,没有任何播放,也没有报告错误。我的主要问题是这些课程。

SMPanel.java

import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JPanel;

public class SMPanel
{
    private JPanel mainPanel;
    private JButton selectionButton;

    SMListenerClass listener = new SMListenerClass(this);
    public JComboBox comboBox;

    static Object soundSelect;



    public SMPanel()
    {
        mainPanel = new JPanel();
        mainPanel.setLayout(new GridLayout(2, 2));

        JComboBox comboBox = new JComboBox();
        comboBox.addItem("1");
        comboBox.addItem("2");
        comboBox.addItem("3");

        comboBox.setEditable(false);
        soundSelect = comboBox.getSelectedItem().toString();
        comboBox.addActionListener(listener);

        selectionButton = new JButton("Test (Play)");
        selectionButton.addActionListener(listener);

        mainPanel.add(comboBox);
        mainPanel.add(selectionButton);


    }


    public JPanel getPanel()
    {
        return mainPanel;
    }

    public static Object getSoundSelect() 
    {
        return soundSelect;
    }

}

SMListenerClass

import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;

public class SMListenerClass implements ActionListener
{
    SMPanel play;
    File soundFilePlay;
    AudioClip soundPlay;

    public SMListenerClass(SMPanel smPanel) 
    {
        play = smPanel;
    }

    public void actionPerformed(ActionEvent arg0) 
    {
        if(SMPanel.soundSelect.equals("1"))
        {
            soundFilePlay = new File("/Sounds/Railroad_Crossing_Bell.wav"); 
            try
            {
                soundPlay = Applet.newAudioClip(soundFilePlay.toURL());
            }  
            catch(Exception e)
            {
                e.printStackTrace();
            }
            soundPlay.play();
            soundPlay.stop();
        }
    }
} 

我正在尝试使用 java.applet 来播放声音,有没有办法解决这个问题,或者以声音可以播放的方式更改代码。

附加说明:我使用的是Java SDK 8,本网站上的其他一些解决方案对我的程序无效。如果您需要更多信息,请询问。

1 个答案:

答案 0 :(得分:0)

看看这个问题:How can I play sound in Java?

另外你为什么要在.play()之后调用.stop()?这不是不播放声音的原因吗?无论如何,不​​需要使用Applets。同时使用新线程播放声音,因此加载和流式传输不会破坏您的用户界面。