忙了一个星期,终于能信心满满的放出第一版本sundayplayer音乐播放器,修复了之前存在的各种bug,虽然本来该加的进度条拖后了,不过也是因为不想用java的swing的进度条,打算重写一个更加漂亮的进度条。按照我的惯例,开放源代码,不过估计没人会有兴趣,不管了,放上去再说,等有心人。

import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.util.Vector;import javax.swing.DefaultListModel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ListSelectionModel;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.media.Time;
import javax.media.bean.playerbean.*;public class musicplayer {public static void main(String[] args) {new first("Sunday player");}}class first extends JFrame implements MouseListener{static int playpress=1;static int listshowpress=1;public Vector name,lujin;String fileName[];String wenjian;File[] fd;int current=0;public MediaPlayer sound;JList list;public first(String title){setVisible(true);//窗口可视setDefaultCloseOperation(EXIT_ON_CLOSE);//点×结束进程setBounds(200,20,300,700);//设置位置以及大小setTitle(title);//设置标题sound=new MediaPlayer();name=new Vector();lujin=new Vector();GridLayout listlayout=new GridLayout(1,1);GridLayout layout=new GridLayout(1,1);GridLayout labellayout=new GridLayout(10,1);ImagePanel jp=new ImagePanel();//重写的imaginepanel,可以加背景图final JPanel listUI=new JPanel();//列表所在的容器final JPanel labelUI=new JPanel();//列表左边的容器final JPanel playUI=new JPanel();//播放器容器playUI.setOpaque(false);//播放器的容器透明//labelUI.setOpaque(false);listUI.setOpaque(false);//列表容器透明labelUI.setBackground(Color.gray);//列表左边的容器颜色为灰playUI.setBounds(-5,-20,300,170);//播放器在底部容器里的位置listUI.setBounds(5,150,280,510);//列表在底部容器里的初始位置labelUI.setBounds(-45,150,50,510);//列表左边容器在底部容器里的初始位置(缩入)this.setLayout(layout);//JFram为gridlayout布局(1,1)   playUI.setLayout(null);     //播放器所在容器自由布局jp.setLayout(null);//底部容器自由布局listUI.setLayout(listlayout);//播放器所在容器gridlayout布局(1,1)labelUI.setLayout(labellayout);//列表左部所在容器gridlayout布局(1,1)final JButton firstlist=new JButton(new ImageIcon("image/icon/playlist1.png"));final JButton list1=new JButton(new ImageIcon("image/icon/playlist1.png"));final JButton list2=new JButton(new ImageIcon("image/icon/playlist1.png"));final JButton list3=new JButton(new ImageIcon("image/icon/playlist1.png"));//列表左边的四个按钮firstlist.setContentAreaFilled(false);list1.setContentAreaFilled(false);list2.setContentAreaFilled(false);list3.setContentAreaFilled(false);//列表左边四个按钮背景透明labelUI.add(firstlist);labelUI.add(list1);labelUI.add(list2);labelUI.add(list3);//列表左边容器添加四个按钮final JButton play=new JButton(new ImageIcon("image/icon/play.png"));final JButton next=new JButton(new ImageIcon("image/icon/next.png"));final JButton before=new JButton(new ImageIcon("image/icon/before.png"));final JButton stop=new JButton(new ImageIcon("image/icon/stop.png"));//播放器的四个按钮final JButton listshow=new JButton(new ImageIcon("image/icon/up.png"));final JButton add=new JButton(new ImageIcon("image/icon/add.png"));//上下拉按钮和添加按钮play.setContentAreaFilled(false);next.setContentAreaFilled(false);before.setContentAreaFilled(false);stop.setContentAreaFilled(false);//播放器四个按钮背景透明play.setBorder(null);next.setBorder(null);before.setBorder(null);stop.setBorder(null);//播放器四个按钮无边框playUI.add(next);playUI.add(play);playUI.add(before);playUI.add(stop);playUI.add(listshow);playUI.add(add);//播放器容器添加四个按钮play.setBounds(115,50,60,60);    next.setBounds(200,60,40,40);before.setBounds(50,60,40,40);stop.setBounds(165,95,30,30);//播放器四个按钮所在位置listshow.setBounds(270,155,15,11);//上下拉按钮在播放器容器中的位置listshow.setContentAreaFilled(false);//上下拉无背景listshow.setBorder(null);//上下拉添加按钮无边框add.setBounds(10,155,15,15);//添加按钮在播放器容器中的位置add.setContentAreaFilled(false);//无背景add.setBorder(null);//添加按钮无边框list = new JList(lujin);try{new read();list.setListData(name);}catch (Exception e) {}list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);list.setBorder(null);JScrollPane js=new JScrollPane(list);js.setBorder(null);js.setOpaque(false);listUI.add(js);jp.add(playUI);jp.add(listUI);jp.add(labelUI);//底部容器添加上部容器add(jp);//JFrame添加底部容器validate();      //改变容器后重新布局add.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {add.setContentAreaFilled(true);JFileChooser openfile=new JFileChooser("G:/Kugou/");openfile.setMultiSelectionEnabled(true);FileNameExtensionFilter ff = new FileNameExtensionFilter( null, "mp3"); openfile.setFileFilter(ff); openfile.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); int result=openfile.showOpenDialog(null);add.setContentAreaFilled(false);if(result==openfile.APPROVE_OPTION)fd=openfile.getSelectedFiles();int x;for(x=0;x<fd.length;x++){lujin.add(fd[x].getAbsolutePath());wenjian=fd[x].getAbsolutePath();new qulujin(wenjian);}list.setListData(name);new save(lujin);}});list.addMouseListener(new MouseAdapter() {public void mousePressed(MouseEvent event){if(event.getClickCount()==2){if(list.getSelectedIndex()>=0){String wj=(String) lujin.get(list.getSelectedIndex());setTitle(wj);current=list.getSelectedIndex();sound.setMediaLocation("file:/"+wj);sound.start();play.setIcon(new ImageIcon("image/icon/pause.png"));playpress++;}}}});listshow.addMouseListener(new MouseListener() {@Overridepublic void mouseReleased(MouseEvent e) {}@Overridepublic void mousePressed(MouseEvent e) {if(listshowpress%2==1) {listshow.setIcon(new ImageIcon("image/icon/up.png"));setSize(300,185);}else {listshow.setIcon(new ImageIcon("image/icon/down.png"));setSize(300,700);}listshowpress++;}@Overridepublic void mouseExited(MouseEvent e) {if(listshowpress%2==1) listshow.setIcon(new ImageIcon("image/icon/up.png"));else listshow.setIcon(new ImageIcon("image/icon/down.png"));}@Overridepublic void mouseEntered(MouseEvent e) {if(listshowpress%2==1) listshow.setIcon(new ImageIcon("image/icon/up1.png"));else listshow.setIcon(new ImageIcon("image/icon/down1.png"));}@Overridepublic void mouseClicked(MouseEvent e) {}});labelUI.addMouseListener(new MouseListener() {@Overridepublic void mouseReleased(MouseEvent e) {// TODO Auto-generated method stub}@Overridepublic void mousePressed(MouseEvent e) {}@Overridepublic void mouseExited(MouseEvent e) {               listUI.setBounds(5,150,280,510);labelUI.setBounds(-45,150,50,510);validate();}@Overridepublic void mouseEntered(MouseEvent e) {listUI.setBounds(50,150,235,510);labelUI.setBounds(0,150,50,510);validate();}   @Overridepublic void mouseClicked(MouseEvent e) {// TODO Auto-generated method stub}});firstlist.addMouseListener(new MouseListener() {@Overridepublic void mouseReleased(MouseEvent e) { }@Overridepublic void mousePressed(MouseEvent e) {firstlist.setIcon(new ImageIcon("image/icon/playlist3.png"));firstlist.setContentAreaFilled(true);list1.setContentAreaFilled(false);list2.setContentAreaFilled(false);list3.setContentAreaFilled(false);}@Overridepublic void mouseExited(MouseEvent e) {firstlist.setIcon(new ImageIcon("image/icon/playlist1.png"));listUI.setBounds(5,150,280,510);labelUI.setBounds(-45,150,50,510);validate();}@Overridepublic void mouseEntered(MouseEvent e) {firstlist.setIcon(new ImageIcon("image/icon/playlist2.png"));listUI.setBounds(50,150,235,510);labelUI.setBounds(0,150,50,510);validate();}@Overridepublic void mouseClicked(MouseEvent e) {}});list1.addMouseListener(new MouseListener() {@Overridepublic void mouseReleased(MouseEvent e) { }@Overridepublic void mousePressed(MouseEvent e) {list1.setIcon(new ImageIcon("image/icon/playlist3.png"));list1.setContentAreaFilled(true);firstlist.setContentAreaFilled(false);list2.setContentAreaFilled(false);list3.setContentAreaFilled(false);}@Overridepublic void mouseExited(MouseEvent e) {list1.setIcon(new ImageIcon("image/icon/playlist1.png"));listUI.setBounds(5,150,280,510);labelUI.setBounds(-45,150,50,510);validate();}@Overridepublic void mouseEntered(MouseEvent e) {list1.setIcon(new ImageIcon("image/icon/playlist2.png"));listUI.setBounds(50,150,235,510);labelUI.setBounds(0,150,50,510);validate();}@Overridepublic void mouseClicked(MouseEvent e) {}});list2.addMouseListener(new MouseListener() {@Overridepublic void mouseReleased(MouseEvent e) { }@Overridepublic void mousePressed(MouseEvent e) {list2.setIcon(new ImageIcon("image/icon/playlist3.png"));list2.setContentAreaFilled(true);list1.setContentAreaFilled(false);firstlist.setContentAreaFilled(false);list3.setContentAreaFilled(false);}@Overridepublic void mouseExited(MouseEvent e) {list2.setIcon(new ImageIcon("image/icon/playlist1.png"));listUI.setBounds(5,150,280,510);labelUI.setBounds(-45,150,50,510);validate();}@Overridepublic void mouseEntered(MouseEvent e) {list2.setIcon(new ImageIcon("image/icon/playlist2.png"));listUI.setBounds(50,150,235,510);labelUI.setBounds(0,150,50,510);validate();}@Overridepublic void mouseClicked(MouseEvent e) {}});list3.addMouseListener(new MouseListener() {@Overridepublic void mouseReleased(MouseEvent e) { }@Overridepublic void mousePressed(MouseEvent e) {list3.setIcon(new ImageIcon("image/icon/playlist3.png"));list3.setContentAreaFilled(true);list1.setContentAreaFilled(false);list2.setContentAreaFilled(false);firstlist.setContentAreaFilled(false);}@Overridepublic void mouseExited(MouseEvent e) {list3.setIcon(new ImageIcon("image/icon/playlist1.png"));listUI.setBounds(5,150,280,510);labelUI.setBounds(-45,150,50,510);validate();}@Overridepublic void mouseEntered(MouseEvent e) {list3.setIcon(new ImageIcon("image/icon/playlist2.png"));listUI.setBounds(50,150,235,510);labelUI.setBounds(0,150,50,510);validate();}@Overridepublic void mouseClicked(MouseEvent e) {}});play.addMouseListener(new MouseListener() {@Overridepublic void mouseReleased(MouseEvent e) {if(playpress%2==1){play.setIcon(new ImageIcon("image/icon/play1.png"));try { Thread.sleep (200) ; } catch (InterruptedException ie){}sound.stop();}else{if(current!=list.getSelectedIndex()){sound.stop();String wi=(String) lujin.get(list.getSelectedIndex());sound.setMediaLocation("file:/"+wi);current=list.getSelectedIndex();}play.setIcon(new ImageIcon("image/icon/pause1.png"));try { Thread.sleep (200) ; } catch (InterruptedException ie){}sound.start();}}@Overridepublic void mousePressed(MouseEvent e) {playpress++;String a;if(playpress%2==1)play.setIcon(new ImageIcon("image/icon/play2.png"));elseplay.setIcon(new ImageIcon("image/icon/pause2.png"));}@Overridepublic void mouseExited(MouseEvent e) {if(playpress%2==1)play.setIcon(new ImageIcon("image/icon/play.png"));elseplay.setIcon(new ImageIcon("image/icon/pause.png"));}@Overridepublic void mouseEntered(MouseEvent e) {if(playpress%2==1)play.setIcon(new ImageIcon("image/icon/play1.png"));elseplay.setIcon(new ImageIcon("image/icon/pause1.png"));}@Overridepublic void mouseClicked(MouseEvent e) {// TODO Auto-generated method stub}});next.addMouseListener(new MouseListener() {@Overridepublic void mouseReleased(MouseEvent e) {int x;x=list.getSelectedIndex()+1;list.setSelectedIndex(x);current=list.getSelectedIndex();String wj=(String) lujin.get(x);sound.setMediaLocation("file:/"+wj);sound.start();next.setIcon(new ImageIcon("image/icon/next1.png"));play.setIcon(new ImageIcon("image/icon/pause.png"));}@Overridepublic void mousePressed(MouseEvent e) {next.setIcon(new ImageIcon("image/icon/next2.png"));}@Overridepublic void mouseExited(MouseEvent e) {next.setIcon(new ImageIcon("image/icon/next.png"));}@Overridepublic void mouseEntered(MouseEvent e) {next.setIcon(new ImageIcon("image/icon/next1.png"));}@Overridepublic void mouseClicked(MouseEvent e) {// TODO Auto-generated method stub}});before.addMouseListener(new MouseListener() {@Overridepublic void mouseReleased(MouseEvent e) {int x;x=list.getSelectedIndex()-1;list.setSelectedIndex(x);current=list.getSelectedIndex();String wj=(String) lujin.get(x);sound.setMediaLocation("file:/"+wj);sound.start();before.setIcon(new ImageIcon("image/icon/before1.png"));play.setIcon(new ImageIcon("image/icon/pause.png"));}@Overridepublic void mousePressed(MouseEvent e) {before.setIcon(new ImageIcon("image/icon/before2.png"));}@Overridepublic void mouseExited(MouseEvent e) {before.setIcon(new ImageIcon("image/icon/before.png"));}@Overridepublic void mouseEntered(MouseEvent e) {before.setIcon(new ImageIcon("image/icon/before1.png"));}@Overridepublic void mouseClicked(MouseEvent e) {// TODO Auto-generated method stub}});stop.addMouseListener(new MouseListener() {@Overridepublic void mouseReleased(MouseEvent e) {sound.setMediaTime(new Time(0));sound.stop();stop.setIcon(new ImageIcon("image/icon/stop1.png"));}@Overridepublic void mousePressed(MouseEvent e) {stop.setIcon(new ImageIcon("image/icon/stop2.png"));play.setIcon(new ImageIcon("image/icon/play.png"));if(playpress%2==0) playpress++;}@Overridepublic void mouseExited(MouseEvent e) {stop.setIcon(new ImageIcon("image/icon/stop.png"));}@Overridepublic void mouseEntered(MouseEvent e) {stop.setIcon(new ImageIcon("image/icon/stop1.png"));}@Overridepublic void mouseClicked(MouseEvent e) {// TODO Auto-generated method stub}});  }@Overridepublic void mouseClicked(MouseEvent e) {// TODO Auto-generated method stub}@Overridepublic void mousePressed(MouseEvent e) {// TODO Auto-generated method stub}@Overridepublic void mouseReleased(MouseEvent e) {// TODO Auto-generated method stub}@Overridepublic void mouseEntered(MouseEvent e) {// TODO Auto-generated method stub}@Overridepublic void mouseExited(MouseEvent e) {// TODO Auto-generated method stub}public class ImagePanel extends JPanel {protected void paintComponent(Graphics g) {super.paintComponent(g);ImageIcon icon = new ImageIcon("image/back1.png");g.drawImage(icon.getImage(), 0, 0, null);}}public class listshow extends JList{protected void paintComponent(Graphics g){Graphics2D g2d=(Graphics2D)g;g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.3f));}}public class save{save(Vector lujin){try{FileOutputStream out=new FileOutputStream("liebiao.txt");ObjectOutputStream output=new ObjectOutputStream(out);output.writeObject(lujin);output.flush();output.close();}catch (Exception e1) {}}}public class read{read(){try{String s;FileInputStream in=new FileInputStream("liebiao.txt");ObjectInputStream input=new ObjectInputStream(in);lujin=(Vector) input.readObject();input.close();for(int i=0;lujin.get(i)!=null;i++){s= (String) lujin.get(i);new qulujin(s);}//list.setListData(lujin);}catch (Exception e1) {}}}public class qulujin {qulujin(String s){String mc="···";int i;int x;for(i=s.length();i>=1;i--){ if(s.charAt(i-1)=='\\') break;}for(x=i+1;x<=s.length();x++)mc+=s.charAt(x-1);StringBuffer buffer=new StringBuffer(mc);name.add(buffer);}}}

sundayplayer第一版本开放源代码相关推荐

  1. python开放源代码的版本控制系统_几款版本控制工具SVN、GIT、CVS及Mercurial的比较...

    版本管理 RCS,cvs,svn,git 比较 1,RCS(Revision Control System) 修订控制系统 特点 : 1), 简单 2), 使用 Lock 机制防止多个开发人员对同一个 ...

  2. 为什么项目开放源代码之后就变成死项目 很少或几乎不再更新

    经常遇到一些好的.NET项目开放源代码之后,便很少更新.即使是大名鼎鼎的CodeProject中的文章中的代码项目,遇到问题时,留言或是主动给作者发邮件,都像石沉大海一样,得不到回复或解决,只好自力更 ...

  3. [机器翻译]参与 Microsoft 开放源代码软件项目的方式

    下面是一个事实:Microsoft 托管在 GitHub,包括.NET 编译器平台,也称为"Roslyn"具有多达 4 万行代码等一些相当大的大约 2,000 开放源代码软件 (O ...

  4. zeppelin连接数据源_使用开放源代码合同(open-zeppelin)创建以太坊令牌

    zeppelin连接数据源 by Danny 通过丹尼 使用开放源代码合同(open-zeppelin)创建以太坊令牌 (Create an Ethereum token using open sou ...

  5. 开放源代码_您对开放源代码感兴趣了多少年?

    开放源代码 您的开源故事多久了? 它是从去年开始的吗? 还是在被称为"开源"之前就成为社区的成员? 我们要求我们的作家分享他们对开源感兴趣的时间. 这是关于他们如何起步的八个故事. ...

  6. 软件分类(自由软件、开放源代码软件、公共软件......)

    软件大致可分为:自由软件和非自由软件 自由软件及非自由软件的种类. 下面是一些在讨论自由软件时会经常提及的术语,它解释了哪些种类是和别的相交迭或者是别的种类的一部分. 阅读其它文章曾有 | " ...

  7. android 远程视频监控程序源码,详解基于Android已开放源代码的远程视频监控系统教程...

    网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket.Socket的英文原义是"孔"或"插座".通常也称作"套接字 ...

  8. python是自由开放源代码软件_开放源代码定义之历史篇

    引言 本文节选自<开源之声--开放源代码运动文集>一书中由著名开源领袖 Bruce Perens 所执笔的<开放源代码定义>一文,开源之道尝试以开放源代码原作者的视野,从而看看 ...

  9. ansible剧本编写_4个开放源代码工具,用于编写下一个剧本

    ansible剧本编写 当我在Great Wide Open (发生于3月16日至17日)上整理幻灯片的闪电演讲时, <那不是很奇怪:创意的开源工具> ,我记得在2015年下半年,我们的工 ...

最新文章

  1. 应对全球粮食危机 AI、5G与机器视觉联手“养鱼”
  2. 现在还需要掌握linux文本模式吗?
  3. php 声波图,Canvas 美丽的声波图
  4. Solve The Maze CodeForces - 1365D(贪心+dfs)
  5. python上传文件到onedrive_基于Python的onedrive文件本地化浏览系统–PyOne
  6. docker mysql数据库初始化_如何在Mysql的Docker容器启动时初始化数据库
  7. 【Flink】Metrics运作机制
  8. wepack中loader的分类
  9. 为什么黑客都用python-为什么黑客需要学习C++和Python?
  10. Atitit 项目源码的架构,框架,配置与环境说明模板 规范 标准化
  11. 如何将git上项目在本地跑起来
  12. 2016年新运维:论《普通运维人员就是秋后的蚂蚱》
  13. Java 中文件之魔数
  14. 内网穿透工具 netapp
  15. AutoSAR开发的三种方法:自上而下式、自下而上式、混合式
  16. 内网穿透:什么是内网穿透,以及用什么软件
  17. python - ffmpeg和moviepy:gif 转mp4
  18. 技嘉b365m小雕驱动工具_百元也有“雕”牌!技嘉B365M Aorus Elite主板评测
  19. yolov3 批量处理图片获得检测框坐标
  20. GPS坐标互转:WGS-84(GPS)、GCJ-02(Google地图)、BD-09(百度地图)

热门文章

  1. EXCEL表格-数据验证报错弹窗制作
  2. 王牌战争服务器维护中多少才能玩,王牌战争最低配置要求一览 什么手机可以玩...
  3. 根据六边形边长求六边形面积
  4. 《分布式虚拟现实系统(DVR)》(Yanlz+Unity+SteamVR+分布式+DVR+人工智能+边缘计算+人机交互+云游戏+框架编程+立钻哥哥+)
  5. 细说设计模式七大原则(7):合成复用原则
  6. 龙卷风java_程序设计-理解java继承-遁地龙卷风
  7. javase加强,十、IO流2
  8. html text-decoration,text-decoration 属性
  9. No.2 Earth
  10. php imap 安装_PHP安装IMAP扩展