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

Java Applet背景音樂播放實現:AudioClip與線程控制

     編輯:Java 相關知識

雖然Applet技術已淘汰,但java.applet.AudioClip介面在簡單音頻播放場景仍有參考價值。本文展示基於Applet的音樂播放器實現,涵蓋播放、循環、停止控制與線程安全。

核心類結構

public class MusicPlayer extends Applet implements ItemListener, ActionListener {
    private AudioClip sound;
    private Choice musicList;
    private Button btnPlay, btnLoop, btnStop;
    
    @Override
    public void init() {
        // 初始化播放列表
        musicList = new Choice();
        musicList.add("t.wav");
        musicList.add("y.wav");
        musicList.add("yd.wav");
        musicList.addItemListener(this);
        
        // 控制按鈕
        btnPlay = new Button("播放");
        btnLoop = new Button("連續");
        btnStop = new Button("停止");
        btnPlay.addActionListener(this);
        btnLoop.addActionListener(this);
        btnStop.addActionListener(this);
        
        // 預載首曲
        sound = getAudioClip(getCodeBase(), "t.wav");
        sound.play();
    }
    
    @Override
    public void itemStateChanged(ItemEvent e) {
        // 切換音樂時重新載入
        sound = getAudioClip(getCodeBase(), musicList.getSelectedItem());
        sound.play();
    }
    
    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == btnPlay) sound.play();
        else if (e.getSource() == btnLoop) sound.loop();
        else if (e.getSource() == btnStop) sound.stop();
    }
}

關鍵技術點

  • getAudioClip():異步載入音頻,返回即刻可用的AudioClip引用
  • 三種播放模式:play()單次、loop()循環、stop()停止
  • URL定位:getCodeBase()獲取Applet基礎路徑,配合相對路徑載入資源
  • 事件驅動:ItemListener處理下拉選單切換,ActionListener處理按鈕操作

現代替代方案

當代應用建議使用:

  • JavaFX MediaPlayer:支持MP3/AAC等現代格式,功能豐富
  • javax.sound.sampled:底層音頻API,適合精確控制
  • 第三方庫:如JLayer(MP3)、Tritonus擴展格式支持

線程安全提示

AudioClip方法本身線程安全,但UI操作需在事件分發線程執行。複雜場景下建議使用SwingUtilities.invokeLater()包裝播放邏輯。

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