一个简单的Java音乐播放器

 更新时间:2017年06月05日 11:49:12   作者:PettyKoKo  
这篇文章主要为大家分享一个简单的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从list中取出对象并获得其属性值的方法

    java从list中取出对象并获得其属性值的方法

    这篇文章主要介绍了java从list中取出对象并获得其属性值的方法,大家参考使用
    2013-12-12
  • Springboot启动后执行方法小结

    Springboot启动后执行方法小结

    本文主要介绍了Springboot启动后执行方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • Java中监听器Listener详解

    Java中监听器Listener详解

    Listener是由Java编写的WEB组件,主要完成对内置对象状态的变化 (创建、销毁)和属性的变化进行监听,做进一步的处理,主要对session和application内置对象监听,这篇文章主要介绍了Java中监听器Listener,需要的朋友可以参考下
    2023-08-08
  • Java中bcrypt算法实现密码加密的方法步骤

    Java中bcrypt算法实现密码加密的方法步骤

    我们可以在Spring Boot和SSM中实现密码加密,使用bcrypt算法可以保障密码的安全性,并且减少了手动编写哈希函数的工作量,本文就来详细的介绍一下,感兴趣的可以了解一下
    2023-08-08
  • java使用MulticastSocket实现多点广播

    java使用MulticastSocket实现多点广播

    这篇文章主要为大家详细介绍了java使用MulticastSocket实现多点广播,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • Idea2020 无法share项目到svn的解决方法

    Idea2020 无法share项目到svn的解决方法

    这篇文章主要介绍了Idea2020 无法share项目到svn的解决方法,需要的朋友可以参考下
    2020-09-09
  • java实现简单的计算器类实例

    java实现简单的计算器类实例

    这篇文章主要介绍了java实现简单的计算器类,涉及java针对键盘监听及数字运算的处理技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • JsonFormat与@DateTimeFormat注解实例解析

    JsonFormat与@DateTimeFormat注解实例解析

    这篇文章主要介绍了JsonFormat与@DateTimeFormat注解实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • SpringBoot项目实战之数据交互篇

    SpringBoot项目实战之数据交互篇

    这篇文章主要给大家介绍了关于SpringBoot项目实战之数据交互篇的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-03-03
  • java socket接收保证能读完数据的实例

    java socket接收保证能读完数据的实例

    这篇文章主要介绍了java socket接收保证能读完数据的实例,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10

最新评论