首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Java Applet 音樂播放控制:AudioClip 與執行緒應用

     編輯:Java 程式設計入門

Applet 音頻播放基礎

Java Applet 透過 AudioClip 介面實現簡單音頻播放,支援 play()(播放一次)、loop()(循環播放)、stop()(停止)。本範例結合 GUI 元件與事件處理,示範音樂檔案選擇與播放控制。

完整程式碼:LX_Thread.java

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監聽按鈕點擊

HTML 嵌入範例

<applet code="LX_Thread.class" width="300" height="150">
</applet>

需將 .wav 檔案置於與 .class 相同目錄。

⚠️ 限制與現代替代方案

  • Applet 已淘汰:瀏覽器不再支援 NPAPI 外掛,Java Web Start 亦已移除
  • AudioClip 功能簡單:無音量控制、進度條、多軌混音等進階功能
  • 現代方案:
    • JavaFX MediaPlayer/AudioClip:豐富媒體控制
    • javax.sound.sampled:低層級音頻 API,支援混音、格式轉換
    • Web 端:HTML5 <audio> + JavaScript

進階:javax.sound.sampled 範例

import 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 的演進脈絡與現代選型。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved