Моя цель - создать программу, которая отображает всплывающее окно с помощью одной кнопки под названием play
. Я использую внутренний класс и прослушиватель действий. Кнопка фактически воспроизводит аудиоклип. Теперь я хотел бы сделать так, чтобы каждый раз, когда я нажимал кнопку воспроизведения, он воспроизводит ее с самого начала, и я не слышу больше одного экземпляра клипа, который воспроизводится в его завершении. Вот код, который у меня есть только для внутреннего класса:Воспроизведение аудиофайла в java
private class PlaySound implements ActionListener {
public void actionPerformed(ActionEvent e) {
String filename = "/Users/philipgouldman/Desktop/iPhoneRingtones/Dummy_Yeah.wav";
try {
Clip clip = AudioSystem.getClip();
clip.open(AudioSystem.getAudioInputStream(new File(filename)));
clip.setFramePosition(0);
clip.start();
} catch (Exception exc) {
exc.printStackTrace(System.out);
}
}
}
Я был бы признателен за любые советы или предложения по достижению этой цели. Я прочитал на интерфейсе клипа javadoc, что, если пользователь хочет, чтобы действие перезапустилось, чтобы просто вызвать stop
после setFramePosition(0)
. Я не могу сказать, что я понимаю, что это значит. Может ли кто-нибудь вести меня в правильном направлении?
Eclipse, мой редактор не может скомпилировать это, в частности, для объявления и инициализации статического объекта Clip. Он говорит, что он не может быть объявлен в нестационарном внутреннем типе –
UPDATE: вынул статический модификатор, также вставил мой путь к файлу, работает так же, как я хотел, чтобы он поблагодарил вас :) –
Конечно, я уже сделал :) –