java 实现音乐播放器的简单实例

实现效果图:

代码如下

package cn.hncu.games;

import java.applet.Applet;

import java.applet.AudioClip;

import java.awt.Color;

import java.awt.Font;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import java.io.File;

import java.net.URL;

import javax.swing.DefaultListModel;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JList;

import javax.swing.ListModel;

import javax.swing.event.ListSelectionEvent;

import javax.swing.event.ListSelectionListener;

public class MusicPlayer extends JFrame{

//显示(歌曲名称)播放状态的标签

JLabel songNameLabel = null;

//四个播放功能键按钮

JButton btnLast = null; //上一曲

JButton btnPlay = null; //播放/停止

JButton btnNext = null; //下一曲

JButton btnLoop = null; //循环

//歌曲列表

JList songsList = null;

AudioClip songs[] = null;

AudioClip currentSong = null;

int index=0; //当前歌曲在JList中的位置(序号)

//歌曲文件名数组---String

String[] strSongNames={ "song1.wav","song2.wav","song3.wav","song4.wav","song5.wav","song6.wav" };

final String DIR="songs\\";

//播放音乐的线程

Thread playerThread=null;

boolean isPlayOrStop = true;//true代表播放状态

boolean isLoop = false; //是否为循环状态

public MusicPlayer() {

super("音乐播放器");

setBounds(300, 50, 310, 500);

setDefaultCloseOperation(EXIT_ON_CLOSE);

setLayout(null);

//hello();

//显示(歌曲名称)播放状态的标签

songNameLabel = new JLabel();

Font songNameFont = new Font("黑体",Font.ITALIC,18);

songNameLabel.setFont(songNameFont);

songNameLabel.setText("我的音乐播放器");

songNameLabel.setBounds(10, 10, 300, 40);

getContentPane().add(songNameLabel);

//四个播放功能键按钮

btnLast = new JButton();

btnPlay = new JButton();

btnNext = new JButton();

btnLoop = new JButton();

//位置大小

btnLast.setBounds(10, 70, 50, 40);

btnPlay.setBounds(70, 70, 50, 40);

btnNext.setBounds(130, 70, 50, 40);

btnLoop.setBounds(190, 70, 50, 40);

//设置图片

btnLast.setIcon( new ImageIcon("images2/1.png"));

btnPlay.setIcon( new ImageIcon("images2/2.png"));

btnNext.setIcon( new ImageIcon("images2/3.png"));

btnLoop.setIcon( new ImageIcon("images2/4.png"));

//添加到框架

getContentPane().add(btnLast);

getContentPane().add(btnPlay);

getContentPane().add(btnNext);

getContentPane().add(btnLoop);

//添加监听

MyMouseListener mml = new MyMouseListener();

btnLast.addMouseListener(mml);

btnPlay.addMouseListener(mml);

btnNext.addMouseListener(mml);

btnLoop.addMouseListener(mml);

//歌曲列表的标题

JLabel listLabel = new JLabel("播放列表");

listLabel.setBounds(10, 120, 100, 30);

Font listLabelFont = new Font("黑体",Font.BOLD,16);

listLabel.setFont(listLabelFont);

getContentPane().add(listLabel);

//歌曲列表

/*

songsList = new JList();

songsList.setBounds(10, 150, 250, 300);

songsList.setBackground(Color.CYAN);

//把所有歌曲名逐个添加到List中

//songsList.setListData(strSongNames);

for(int i=0;i

DefaultListModel dm = (DefaultListModel)songsList.getModel();

dm.add(i,strSongNames[i]);

}

getContentPane().add(songsList);

*/

DefaultListModel lm = new DefaultListModel();

songsList = new JList(lm);

songsList.setBounds(10, 150, 250, 300);

songsList.setBackground(Color.CYAN);

//把所有歌曲名逐个添加到List中

//songsList.setListData(strSongNames);

songs = new AudioClip[strSongNames.length];

for(int i=0;i

lm.add(i,strSongNames[i]);

songs[i] = loadSound(strSongNames[i]);

}

getContentPane().add(songsList);

//lm.remove(3);

//对JList控件的监听技术实现

songsList.addListSelectionListener(new ListSelectionListener() {

@Override

public void valueChanged(ListSelectionEvent e) {

currentSong.stop();

index = songsList.getSelectedIndex();

isPlayOrStop = true;

playerThread = new Thread( new MusicRun() );

playerThread.start();

}

});

//单开一个线程,专用于播放音乐

playerThread = new Thread( new MusicRun() );

playerThread.start();

setVisible(true);

}

private AudioClip loadSound(String fileName) {

try {

URL url = new URL("file:songs\\"+fileName);

AudioClip au = Applet.newAudioClip(url);

return au;

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

//讲解音乐播放的基本技术

private void hello() {

try {

File f = new File("songs\\song1.wav");

URL url = f.toURI().toURL();

//URL url = new URL("file:songs\\song1.wav");

AudioClip au = Applet.newAudioClip(url);

au.play();

//au.loop();

//au.stop();

} catch (Exception e) {

e.printStackTrace();

}

}

private class MyMouseListener extends MouseAdapter{

@Override

public void mouseClicked(MouseEvent e) {

JButton btn = (JButton) e.getSource();

currentSong.stop();

if(btn==btnPlay){

isPlayOrStop = !isPlayOrStop;

}else if(btn==btnLast){

index--;

if(index<0){

index = strSongNames.length-1;

}

//isPlayOrStop=true;

}else if(btn==btnNext){

index++;

index = index%strSongNames.length;

}else if(btn==btnLoop){

isLoop = !isLoop;

}

if(isPlayOrStop){//播放

playerThread = new Thread( new MusicRun() );

playerThread.start();

}else{//停止

songsList.setSelectedIndex(index);

songNameLabel.setText("停止播放:"+strSongNames[index]);

btnPlay.setIcon( new ImageIcon("images2/2.png"));

}

}

}

private class MusicRun implements Runnable{

@Override

public void run() {

currentSong = songs[index];

if(isLoop){

currentSong.loop();

songNameLabel.setText("循环播放:"+strSongNames[index]);

}

if (isPlayOrStop) {

currentSong.play();

}

//在播放列表中选定当前歌曲

songsList.setSelectedIndex(index);

//把播放按钮的图标切换成“停止”

btnPlay.setIcon( new ImageIcon("images2/5.png"));

if(!isLoop){

songNameLabel.setText("正在播放:"+strSongNames[index]);

}

}

}

public static void main(String[] args) {

new MusicPlayer();

}

}

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望通过本文能帮助到大家,谢谢大家对本站的支持!

java音乐播放器视频_java 实现音乐播放器的简单实例相关推荐

  1. java安全管理器视频_java安全-安全管理器

    基本概念 安全管理器是一个负责控制具体操作是否允许执行的类,它主要负责检查的操作包括如下内容: 创建一个新的类加载器: 退出虚拟机 使用反射访问另一个类的成员 访问本地文件 打开socket连接 启动 ...

  2. java通知图库更新视频_Java实现视频网站的视频上传、视频转码、视频关键帧抽图, 及视频播放功能...

    视频网站中提供的在线视频播放功能,播放的都是FLV格式的文件,它是Flash动画文件,可通过Flash制作的播放器来播放该文件.项目中用制作的player.swf播放器. 多媒体视频处理工具FFmpe ...

  3. php提取视频音乐,如何从视频里提取音乐伴奏

    经常从一些视频中听到优美的旋律,这些旋律是很独特的,如果将它的伴奏提取出来用在一些视频配乐和手机铃声上来说,这会是一件非常好的主意,那么如何从视频中提取音乐的伴奏呢?相信对很多人来说这都是一件很难得事 ...

  4. video网页能播放.mp4视频,微信不能播放的问题

    刚刚学开发播放视频的人员来说,可能有以下2种问题, 一.在本地调试网页能播放.mp4视频,放到服务器上,在手机上测试,却不能播放.mp4视频. 其实这是服务器上将下载.mp4的格式文件给禁止了.在服务 ...

  5. Web端直接播放 .ts 视频及mux.js播放ts视频没有声音

    最近项目中需要前端播放 .ts 格式视频,捣鼓了几天学习到很多知识,也发掘了一种优秀的解决方案,分享给有同样需求的同学. 常见方案 在网上查找的大部分解决方案都是用诸如videojs等网页播放器,接收 ...

  6. OpenCV重复播放摄像头视频,循环播放摄像头(视频)文件,循环播放视频中某一段视频

    OpenCV中使用摄像头录像并保存并不难实现,本文针对摄像头实时帧画面进行记录,并重复播放 视频文件的读取和处理方法类似,首先,本文对摄像头进行采集和实时帧画面显示. #include <ope ...

  7. android 无法播放mp4视频,Android VideoView无法播放视频错误,特别是.mp4

    我正在尝试在我的应用程序中播放视频,但我得不能播放此视频错误.关于这一点,我遇到了很多线索.他们要求在玩家准备好后开始播放视频.我也是这样做的.但无法弄清楚问题.请在下面找到我的代码. public ...

  8. java 字符长度 中文_java判断中文字符串长度的简单实例

    话不多说,上代码: /** * 获取字符串的长度,如果有中文,则每个中文字符计为2位 * @param value 指定的字符串 * @return 字符串的长度 */ public static i ...

  9. java判断字符长度_java判断中文字符串长度的简单实例

    话不多说,上代码: /** * 获取字符串的长度,如果有中文,则每个中文字符计为2位 * @param value 指定的字符串 * @return 字符串的长度 */ public static i ...

最新文章

  1. 【动态规划专题】最长上升子序列模型
  2. CTO 两年吃回扣上百万元,将面临数十年监禁
  3. Tomcat是什么:Tomcat与Java技、Tomcat与Web应用以及Tomcat基本框架及相关配置
  4. 【讀書筆記】人人都是产品经理
  5. 更改Android Studio中AVD的默认路径
  6. Flutter实战视频-移动电商-45.详细页_说明区域UI编写
  7. 目标检测(十一)--ConvNets目标检测概述
  8. python学习笔记之hashlib
  9. JavaScript 实现页面跳转的几种方式
  10. access无法 dolby_Win10专业版装不了dolby该怎么办?Win10 dolby音效驱动安装教程
  11. 漫画|前端江湖恩仇录始末
  12. WPF:ListView 分页
  13. MVC思想及SpringMVC设计理念
  14. java 解析dojo_Dojo入门三种HelloWorld!
  15. Voldemort博客
  16. 三角函数曲线(含具体分析过程)
  17. python爬虫检测ip是否有效
  18. 2019 年 Google 编程之夏活动报告
  19. Spring中用@Component、@Repository、@Service和 @Controller等标注的默认Bean名称会是小写开头的非限定类名
  20. DirectX9函数:Direct3DCreate9

热门文章

  1. 在HTML中 标记hn的作用,html标记_1.ppt
  2. ISLR统计学习导论之R语言应用(五):R语言实现交叉验证和bootstrap
  3. 企业微信报错,提示无权限访问
  4. 3842的充电器原理
  5. Python爬虫:给我一个链接,西瓜视频随便下载
  6. 安装linux系统,卡在Detecting hardware
  7. 如果电脑蓝屏0xc000021a怎么办
  8. Redis淘汰机制(Eviction policies)
  9. 计算机桌面没有打字,电脑输入法不见了怎么办
  10. OneDrive登录问题