-1
我已經做了一個自定義窗口與兩個JButtons,當點擊將開始分別停止.wav播放。我遇到的麻煩是我可以開始聲音,但除非關閉程序,否則我無法阻止它。Audioplayer開始/停止與動作事件
多次單擊開始按鈕將使相同的文件在「canon」中播放。我懷疑這與每個按鈕創建自己的文件「實例」有關,它們在不同的{}內,但我找不到解決此問題的任何方法。我願意改變/和或刪除我目前使用的方法,以支持更好的工作。
下面是代碼:
package jojo;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import sun.audio.AudioPlayer;
import sun.audio.AudioStream;
public class Ljudknappar extends JFrame implements ActionListener{
private static final long serialVersionUID = -389308630436200228L;
private JButton knapp;
private JButton knapp2;
public Ljudknappar()
{
super("Ett fönster");
super.setDefaultCloseOperation(EXIT_ON_CLOSE);
super.setLocation(50,50);
super.setPreferredSize(new Dimension(400,400));
super.setLayout(new FlowLayout(FlowLayout.CENTER));
knapp = new JButton("Starta");
knapp.addActionListener(this);
knapp.setPreferredSize(new Dimension(90,30));
add(knapp);
knapp2 = new JButton("Stopp");
knapp2.addActionListener(this);
knapp2.setPreferredSize(new Dimension(90,30));
add(knapp2);
pack();
super.setVisible(true);
}
public static void main(String[] args) {
new Ljudknappar();
}
@Override
public void actionPerformed(ActionEvent e) {
InputStream in;
try
{
in = new FileInputStream(new File("my .wav file of choice"));
AudioStream Ljud = new AudioStream(in);
Object src = e.getSource();
if (src == knapp)
{
AudioPlayer.player.start(Ljud);
}
if (src == knapp2)
{
AudioPlayer.player.stop(Ljud);
}
}
catch(Exception error)
{
JOptionPane.showMessageDialog(null,"Something went wrong :(");
}
}
}
另外,如果你知道的方式來解決這個並有暫停第三個按鈕,那會是相當好。
我希望能夠使用而不必下載JLayer或類似軟件來啓動/停止音頻。只有基本的進口。
我很感激任何幫助。