Java Applet 透過 AudioClip 介面實現簡單音頻播放,支援 play()(播放一次)、loop()(循環播放)、stop()(停止)。本範例結合 GUI 元件與事件處理,示範音樂檔案選擇與播放控制。
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
import java.applet.AudioClip;
public class LX_Thread extends Applet implements ItemListener, ActionListener {
AudioClip sound;
Choice c = new Choice();
Button play = new Button("播放");
Button loop = new Button("連續");
Button stop = new Button("停止");
public void init() {
// 初始化音樂選單
c.add("t.wav");
c.add("y.wav");
c.add("yd.wav");
add(c);
c.addItemListener(this);
// 新增控制按鈕
add(play);
add(loop);
add(stop);
play.addActionListener(this);
loop.addActionListener(this);
stop.addActionListener(this);
// 預設載入並播放
sound = getAudioClip(getCodeBase(), "t.wav");
sound.play();
}
// 下拉選單選擇音樂檔
public void itemStateChanged(ItemEvent e) {
sound = getAudioClip(getCodeBase(), c.getSelectedItem());
sound.play();
}
// 按鈕事件處理
public void actionPerformed(ActionEvent e) {
if (e.getSource() == play) sound.play();
else if (e.getSource() == loop) sound.loop();
else if (e.getSource() == stop) sound.stop();
}
}
| 元件/方法 | 功能 |
|---|---|
getAudioClip(URL, String) | 從程式碼基底 URL 載入音頻檔,支援 .wav、.au、.mid 等格式 |
getCodeBase() | 取得 Applet 所在網頁目錄 URL |
AudioClip.play() | 非阻塞播放一次 |
AudioClip.loop() | 非阻塞循環播放 |
AudioClip.stop() | 立即停止播放 |
Choice | 下拉選單元件 |
ItemListener | 監聽選單選擇變更 |
ActionListener | 監聽按鈕點擊 |
<applet code="LX_Thread.class" width="300" height="150"> </applet>
需將 .wav 檔案置於與 .class 相同目錄。
MediaPlayer/AudioClip:豐富媒體控制javax.sound.sampled:低層級音頻 API,支援混音、格式轉換<audio> + JavaScriptimport javax.sound.sampled.*;
public class ModernAudio {
public static void play(String filePath) throws Exception {
File file = new File(filePath);
AudioInputStream ais = AudioSystem.getAudioInputStream(file);
Clip clip = AudioSystem.getClip();
clip.open(ais);
clip.start(); // 播放
// clip.loop(Clip.LOOP_CONTINUOUSLY); // 循環
Thread.sleep(clip.getMicrosecondLength() / 1000); // 等待播放完成
clip.close();
}
}
理解 Applet 時代的 AudioClip 設計,有助於掌握 Java 音頻 API 的演進脈絡與現代選型。