从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,本网站上的其他一些解决方案对我的程序无效。如果您需要更多信息,请询问。
答案 0 :(得分:0)
看看这个问题:How can I play sound in Java?
另外你为什么要在.play()之后调用.stop()?这不是不播放声音的原因吗?无论如何,不需要使用Applets。同时使用新线程播放声音,因此加载和流式传输不会破坏您的用户界面。