答案:该系统使用Java Swing构建界面,ArrayList存储歌曲信息,通过AudioInputstream和Clip实现WAV音频播放。定义Song类封装标题、艺术家和文件路径,主界面显示歌曲列表并提供播放、暂停、停止功能。初始化时添加示例歌曲,用户选择后调用AudioPlayer播放对应文件。后续可扩展文件夹扫描、播放列表保存及格式支持等功能。

开发一个简易的音乐播放管理系统,可以用Java结合Swing做界面、ArrayList存储歌曲信息、AudioInputStream和Clip播放音频。整个系统不需要数据库,适合初学者练手。下面一步步说明实现思路和关键代码。
1. 定义歌曲类(Song)
每首歌包含基本信息:标题、艺术家、文件路径。
public class Song { private String title; private String artist; private String filePath; <pre class='brush:java;toolbar:false;'>public Song(String title, String artist, String filePath) { this.title = title; this.artist = artist; this.filePath = filePath; } // Getter方法 public String getTitle() { return title; } public String getArtist() { return artist; } public String getFilePath() { return filePath; } @Override public String toString() { return title + " - " + artist; }
}
2. 播放功能(使用Java内置音频API)
用javax.sound.sampled.Clip播放本地音频文件(支持WAV格式最稳定)。
立即学习“Java免费学习笔记(深入)”;
import javax.sound.sampled.*; import java.io.File; <p>public class AudioPlayer { private Clip clip;</p><pre class='brush:java;toolbar:false;'>public void play(String filePath) { try { File audioFile = new File(filePath); AudioInputStream audiostream = AudioSystem.getAudioInputStream(audioFile); clip = AudioSystem.getClip(); clip.open(audioStream); clip.start(); } catch (Exception e) { System.out.println("播放失败:" + e.getMessage()); } } public void stop() { if (clip != null && clip.isRunning()) { clip.stop(); } } public void pause() { if (clip != null && clip.isRunning()) { clip.stop(); } } public void resume() { if (clip != null && !clip.isRunning()) { clip.start(); } }
}
3. 图形界面与功能集成(Swing)
创建主窗口,包含列表显示歌曲、按钮控制播放、暂停、停止。
import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; <p>public class MusicManager extends JFrame { private ArrayList<Song> songList = new ArrayList<>(); private JList<Song> songJList; private DefaultListModel<Song> listModel; private AudioPlayer player = new AudioPlayer();</p><pre class='brush:java;toolbar:false;'>public MusicManager() { setTitle("简易音乐播放器"); setSize(400, 300); setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE); setLayout(new BorderLayout()); // 初始化数据(可替换为读取文件夹) songList.add(new Song("晴天", "周杰伦", "music/qingtian.wav")); songList.add(new Song("七里香", "周杰伦", "music/qilixiang.wav")); // 列表模型和组件 listModel = new DefaultListModel<>(); for (Song s : songList) { listModel.addElement(s); } songJList = new JList<>(listModel); add(new JScrollPane(songJList), BorderLayout.CENTER); // 控制按钮 JPanel buttonPanel = new JPanel(); JButton playBtn = new JButton("播放"); JButton stopBtn = new JButton("停止"); playBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Song selected = songJList.getSelectedValue(); if (selected != null) { player.play(selected.getFilePath()); } else { JOptionPane.showMessageDialog(null, "请先选择一首歌"); } } }); stopBtn.addActionListener(e -> player.stop()); buttonPanel.add(playBtn); buttonPanel.add(stopBtn); add(buttonPanel, BorderLayout.SOUTH); } public static void main(String[] args) { SwingUtilities.invokeLater(() -> { new MusicManager().setVisible(true); }); }
}
4. 扩展建议
这个系统可以继续优化:
- 添加“上一首/下一首”功能,维护当前播放索引
- 自动扫描指定文件夹中的WAV文件并加载
- 保存播放列表到文本文件,下次启动读取
- 增加进度条或音量控制(更复杂)
- 支持MP3格式(需引入
javazoom等第三方库)
基本上就这些。核心是理解歌曲数据管理、Swing事件响应、音频播放流程。不复杂但容易忽略文件路径和音频格式兼容性问题。调试时先确保WAV文件能被正确读取。


