无法从Java JComboBox播放声音
问题描述:
从JComboBox中选择并按下按钮后,我无法播放声音文件。这个程序的目的就是要做到这一点。但是,按下按钮后,没有任何播放,并且没有错误报告。我的主要问题是这些类。无法从Java 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,本网站上的其他一些解决方案对我的程序无效。如果您需要更多信息,请询问。
答
看这个问题:How can I play sound in Java?
而且你为什么调用.stop().play之后()?这不就是不播放声音的原因吗?无论如何,不需要使用Applets。也可以使用新线程播放声音,因此加载和流式传输不会破坏用户界面。
+0
感谢您将线程连接起来,最终播放音效毫无问题。 – RDSparkle 2014-11-22 01:06:09
看看这[线程](http://*.com/questions/26828282/why-do-i-get-only-hear-noise-after-changing-the-audio-input-in-java/ 26832131?noredirect = 1#comment42286661_26832131)首先是有帮助的。如果不是,请回到这里发表评论。 – hfontanez 2014-11-22 00:17:41
小苹果变化不大,并且具有非常严格的沙盒安全设置,您可能无法从磁盘加载文件 – MadProgrammer 2014-11-22 00:21:44
该线程对问题没有多大帮助,特别是对于我来说,仍然在开发本领域的技能和理解。无论如何,因为小程序是如你所说的那样具有限制性,你是否建议将小程序全部一起取出并用不同的库重新写入? – RDSparkle 2014-11-22 00:29:38