一个简单的Java音乐播放器
时间:2019-03-30
本文章向大家介绍一个简单的Java音乐播放器,主要包括一个简单的Java音乐播放器使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
本文实例为大家分享了Java音乐播放器展示的具体代码,供大家参考,具体内容如下
package KKMusic; import java.applet.Applet; import java.applet.AudioClip; import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import java.awt.CardLayout; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.sound.sampled.FloatControl; import javax.sound.sampled.SourceDataLine; import javax.swing.GroupLayout; import javax.swing.GroupLayout.Alignment; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import javax.swing.LayoutStyle.ComponentPlacement; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import java.awt.event.ItemListener; import java.io.File; import java.net.MalformedURLException; import java.net.URL; import java.awt.event.ItemEvent; import javax.swing.JMenu; import javax.swing.JTextField; import javax.swing.SwingConstants; import javax.swing.JSlider; import java.awt.event.MouseMotionAdapter; import java.awt.event.MouseEvent; public class Mp3 extends JFrame { private JPanel contentPane; File file;//声明文件对象 String filename; JFileChooser chooser=new JFileChooser();//创建一个文件选择器 private JTextField xiaoxi; boolean loop=false; AudioClip adc;//声音音频剪辑对象 SourceDataLine line; private FloatControl volume = null; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { Mp3 frame = new Mp3(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public Mp3() { setTitle("\u97F3\u4E50\u64AD\u653E\u5668"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 265, 333); JMenuBar menuBar = new JMenuBar(); setJMenuBar(menuBar); JMenu mnNewMenu = new JMenu("\u6587\u4EF6"); menuBar.add(mnNewMenu); xiaoxi = new JTextField(); xiaoxi.setColumns(10); xiaoxi.setText("欢迎使用本播放器"); JMenuItem dakai = new JMenuItem("\u6253\u5F00"); dakai.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int value=chooser.showOpenDialog(chooser);//接受文件选择器的状态 if(value==chooser.APPROVE_OPTION){ file=chooser.getSelectedFile();//返回选中文件 filename=file.getName(); String flag=filename; xiaoxi.setText(flag); try { if(adc!=null) adc.stop(); URL url=new URL("file:"+file.getPath());//创建资源定位 adc=Applet.newAudioClip(url); //adc.play(); } catch (MalformedURLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); System.out.println("不能播放!"); } } } }); mnNewMenu.add(dakai); JMenuItem tuichu = new JMenuItem("\u9000\u51FA"); tuichu.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dispose(); if(adc!=null) adc.stop(); return ; } }); mnNewMenu.add(tuichu); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); JButton playbtn = new JButton("\u64AD\u653E"); playbtn.setHorizontalAlignment(SwingConstants.LEFT); playbtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String flag="正在播放:"+filename; if(adc==null){ flag="请选择播放的音乐"; xiaoxi.setText(flag); return; } adc.play(); xiaoxi.setText(flag); } }); JButton stopbtn = new JButton("\u6682\u505C"); stopbtn.setHorizontalAlignment(SwingConstants.LEFT); stopbtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { adc.stop(); String flag="停止播放音乐:"+filename; xiaoxi.setText(flag); } }); JButton againbtn = new JButton("\u5FAA\u73AF"); againbtn.setHorizontalAlignment(SwingConstants.LEFT); againbtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { loop =!loop; String flag=""; ; if(loop){ adc.play(); adc.loop();//循环播放 flag="循环播放:"+filename; } else{ adc.play(); flag="顺序播放"+filename; } xiaoxi.setText(flag); } }); GroupLayout gl_contentPane = new GroupLayout(contentPane); gl_contentPane.setHorizontalGroup( gl_contentPane.createParallelGroup(Alignment.LEADING) .addGroup(gl_contentPane.createSequentialGroup() .addContainerGap() .addGroup(gl_contentPane.createParallelGroup(Alignment.TRAILING, false) .addComponent(xiaoxi, Alignment.LEADING) .addGroup(Alignment.LEADING, gl_contentPane.createSequentialGroup() .addComponent(playbtn, GroupLayout.PREFERRED_SIZE, 64, GroupLayout.PREFERRED_SIZE) .addPreferredGap(ComponentPlacement.UNRELATED) .addComponent(stopbtn, GroupLayout.PREFERRED_SIZE, 66, GroupLayout.PREFERRED_SIZE) .addPreferredGap(ComponentPlacement.UNRELATED) .addComponent(againbtn, GroupLayout.PREFERRED_SIZE, 64, GroupLayout.PREFERRED_SIZE))) .addContainerGap(15, Short.MAX_VALUE)) ); gl_contentPane.setVerticalGroup( gl_contentPane.createParallelGroup(Alignment.TRAILING) .addGroup(gl_contentPane.createSequentialGroup() .addComponent(xiaoxi, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addPreferredGap(ComponentPlacement.UNRELATED) .addPreferredGap(ComponentPlacement.RELATED, 173, Short.MAX_VALUE) .addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE) .addComponent(playbtn) .addComponent(stopbtn) .addComponent(againbtn)) .addContainerGap()) ); contentPane.setLayout(gl_contentPane); } }
运行结果如下:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 利用PyQt5+Matplotlib 绘制静态/动态图的实现代码
- PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
- Python基于正则表达式实现计算器功能
- python利用os模块编写文件复制功能——copy()函数用法
- 解决python 虚拟环境删除包无法加载的问题
- Laravel框架路由管理简单示例
- php + WebUploader实现图片批量上传功能
- php查询内存信息操作示例
- ThinkPHP3.2框架操作Redis的方法分析
- python实现图像外边界跟踪操作
- php微信分享到朋友圈、QQ、朋友、微博
- Numpy 多维数据数组的实现
- 使用matplotlib的pyplot模块绘图的实现示例
- PHP get_html_translation_table()函数用法讲解
- Laravel中10个有用的用法小结