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

Java Swing 音樂播放器實作:樂樂音樂 1.0 本地版

     編輯:Java 綜合教學

專案簡介

樂樂音樂 1.0 是一款基於 Java Swing 開發的本地音樂播放器,支援常見音頻格式播放、播放列表管理、歌詞顯示等核心功能,採用 MVC 架構分層,界面採用 Swing 組件構建,適合作為 Java GUI 開發進階練習項目。

核心功能模塊

  • 播放引擎:基於 javax.sound.sampled API 實現音頻解碼與播放控制(播放、暫停、停止、進度跳轉、音量調節)。
  • 播放列表管理:支援添加/移除曲目、拖拽排序、循環模式(列表循環、單曲循環、隨機播放)。
  • 媒體庫掃描:遞歸掃描本地目錄,解析 ID3 標籤(標題、藝術家、專輯、封面、時長)。
  • 歌詞同步顯示:解析 LRC 格式,根據播放進度高亮當前行,支援偏移校準。
  • 界面交互:主窗口、迷你模式、系統托盤圖標、全局熱鍵控制。

技術架構

com.lele.music
├── ui           // Swing 視圖層:MainFrame, PlaylistPanel, LyricPanel, TrayIcon
├── player       // 播放核心:AudioPlayer, PlaybackController, ProgressListener
├── model        // 數據模型:Track, Playlist, LyricLine
├── service      // 業務服務:MediaScanner, ID3Parser, LyricParser, SettingsManager
└── util         // 工具類:TimeFormat, FileFilter, SwingUtils

關鍵技術難點與解決

1. 音頻流式播放與進度控制

使用 AudioInputStream 讀取音頻數據,通過 SourceDataLine 寫入聲卡緩衝區。播放進度通過已讀取幀數計算,註冊 LineListener 監聽 STOP/START 事件實現精準同步。

2. Swing 線程安全

所有 UI 更新必須在 EDT (Event Dispatch Thread) 執行,使用 SwingUtilities.invokeLater() 或 SwingWorker 處理耗時任務(掃描、解析),避免界面凍結。

3. 歌詞解析與高亮渲染

正則解析 LRC 時間標籤 \[(\d{2}):(\d{2})\.(\d{2,3})\],轉換為毫秒時間點。自定義 JList 渲染器,根據當前播放時間高亮對應行,平滑滾動。

構建與運行

# 編譯
javac -d out -sourcepath src src/com/lele/music/Main.java

# 打包可執行 JAR
jar cvfe LeleMusic.jar com.lele.music.Main -C out .

# 運行
java -jar LeleMusic.jar

擴展方向

  • 接入網絡音樂 API(網易雲、QQ 音樂)實現在線播放
  • 引入 JavaFX 替代 Swing 實現現代化 UI(動畫、CSS 樣式、WebView 嵌入 MV)
  • 添加均衡器、聲譜圖、睡眠定時器等進階功能
  • 支援插件機制(SPI)實現輸出設備擴展(Bluetooth、DLNA)

樂樂音樂 1.0 (本地版) — 純 Java 打造的輕量級音樂體驗

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