sundayplayer第一版本開放源代碼

 忙了一個星期,終於能信心滿滿的放出第一版本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() {
			
			@Override
			public 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() {
			
			@Override
			public void mouseReleased(MouseEvent e) {

			}
			
			@Override
			public 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++;
			}
			
			@Override
			public 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"));
				
			}
			
			@Override
			public 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"));
				
			}
			
			@Override
			public void mouseClicked(MouseEvent e) {
			}
		});

        labelUI.addMouseListener(new MouseListener() {
			
			@Override
			public void mouseReleased(MouseEvent e) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void mousePressed(MouseEvent e) {

			}
			
			@Override
			public void mouseExited(MouseEvent e) {		    	
		    	listUI.setBounds(5,150,280,510);
		    	labelUI.setBounds(-45,150,50,510);
		    	validate();
			}
			
			@Override
			public void mouseEntered(MouseEvent e) {

                listUI.setBounds(50,150,235,510);
		    	labelUI.setBounds(0,150,50,510);
		    	validate();
			}   
			
			@Override
			public void mouseClicked(MouseEvent e) {
				// TODO Auto-generated method stub
				
			}
		});
        
        firstlist.addMouseListener(new MouseListener() {
			
			@Override
			public void mouseReleased(MouseEvent e) {	
			}
			
			@Override
			public void mousePressed(MouseEvent e) {
				firstlist.setIcon(new ImageIcon("image/icon/playlist3.png"));
				firstlist.setContentAreaFilled(true);
				list1.setContentAreaFilled(false);
				list2.setContentAreaFilled(false);
				list3.setContentAreaFilled(false);
			}
			
			@Override
			public 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();
				
			}
			
			@Override
			public 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();
			}
			
			@Override
			public void mouseClicked(MouseEvent e) {
			}
		});
        list1.addMouseListener(new MouseListener() {
        	
        	@Override
        	public void mouseReleased(MouseEvent e) {	
        	}
        	
        	@Override
        	public void mousePressed(MouseEvent e) {
        		list1.setIcon(new ImageIcon("image/icon/playlist3.png"));
        		list1.setContentAreaFilled(true);
				firstlist.setContentAreaFilled(false);
				list2.setContentAreaFilled(false);
				list3.setContentAreaFilled(false);
        	}
        	
        	@Override
        	public 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();
        	}
        	
        	@Override
        	public 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();
        	}
        	
        	@Override
        	public void mouseClicked(MouseEvent e) {
        	}
        });
        list2.addMouseListener(new MouseListener() {
        	
        	@Override
        	public void mouseReleased(MouseEvent e) {	
        	}
        	
        	@Override
        	public void mousePressed(MouseEvent e) {
        		list2.setIcon(new ImageIcon("image/icon/playlist3.png"));
        		list2.setContentAreaFilled(true);
				list1.setContentAreaFilled(false);
				firstlist.setContentAreaFilled(false);
				list3.setContentAreaFilled(false);
        	}
        	
        	@Override
        	public 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();
        	}
        	
        	@Override
        	public 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();
        	}
        	
        	@Override
        	public void mouseClicked(MouseEvent e) {
        	}
        });
             list3.addMouseListener(new MouseListener() {
        	
        	@Override
        	public void mouseReleased(MouseEvent e) {	
        	}
        	
        	@Override
        	public void mousePressed(MouseEvent e) {
        		list3.setIcon(new ImageIcon("image/icon/playlist3.png"));
        		list3.setContentAreaFilled(true);
				list1.setContentAreaFilled(false);
				list2.setContentAreaFilled(false);
				firstlist.setContentAreaFilled(false);
        	}
        	
        	@Override
        	public 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();
        	}
        	
        	@Override
        	public 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();
        	}
        	
        	@Override
        	public void mouseClicked(MouseEvent e) {
        	}
        });
    	
    	
		play.addMouseListener(new MouseListener() {
			
			@Override
			public 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();}
				
			}
			
			@Override
			public void mousePressed(MouseEvent e) {
				playpress++;
				String a;
				if(playpress%2==1)

					play.setIcon(new ImageIcon("image/icon/play2.png"));
				    
				else
					play.setIcon(new ImageIcon("image/icon/pause2.png"));
					
				
			}
			
			@Override
			public void mouseExited(MouseEvent e) {
				if(playpress%2==1)
					play.setIcon(new ImageIcon("image/icon/play.png"));
				else
					play.setIcon(new ImageIcon("image/icon/pause.png"));
				
			}
			
			@Override
			public void mouseEntered(MouseEvent e) {
				if(playpress%2==1)
					play.setIcon(new ImageIcon("image/icon/play1.png"));
				else
					play.setIcon(new ImageIcon("image/icon/pause1.png"));
			}

			@Override
			public void mouseClicked(MouseEvent e) {
				// TODO Auto-generated method stub
				
			}
			
			
		});
          next.addMouseListener(new MouseListener() {
			
			@Override
			public 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"));
				
				
			}
			
			@Override
			public void mousePressed(MouseEvent e) {
				next.setIcon(new ImageIcon("image/icon/next2.png"));
				
			}
			
			@Override
			public void mouseExited(MouseEvent e) {
				next.setIcon(new ImageIcon("image/icon/next.png"));
				
			}
			
			@Override
			public void mouseEntered(MouseEvent e) {
				next.setIcon(new ImageIcon("image/icon/next1.png"));
				
			}
			
			@Override
			public void mouseClicked(MouseEvent e) {
				// TODO Auto-generated method stub
				
			}
		});
       before.addMouseListener(new MouseListener() {
	
	   @Override
	   public 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"));
		
	    }
	
	   @Override
	   public void mousePressed(MouseEvent e) {
		   before.setIcon(new ImageIcon("image/icon/before2.png"));
		
	   }
	
	   @Override
	   public void mouseExited(MouseEvent e) {
		   before.setIcon(new ImageIcon("image/icon/before.png"));
		
	   }
	
	   @Override
	   public void mouseEntered(MouseEvent e) {
		  before.setIcon(new ImageIcon("image/icon/before1.png"));
		
	   }
	
	   @Override
	    public void mouseClicked(MouseEvent e) {
		// TODO Auto-generated method stub
		
	   }
       });
       stop.addMouseListener(new MouseListener() {
    	   
    	   @Override
    	   public void mouseReleased(MouseEvent e) {
    		   sound.setMediaTime(new Time(0));
    		   sound.stop();
    		   stop.setIcon(new ImageIcon("image/icon/stop1.png"));
    		   
    	   }
    	   
    	   @Override
    	   public 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++;
    	   }
    	   
    	   @Override
    	   public void mouseExited(MouseEvent e) {
    		   stop.setIcon(new ImageIcon("image/icon/stop.png"));
    		   
    	   }
    	   
    	   @Override
    	   public void mouseEntered(MouseEvent e) {
    		   stop.setIcon(new ImageIcon("image/icon/stop1.png"));
    		   
    	   }
    	   
    	   @Override
    	   public void mouseClicked(MouseEvent e) {
    		   // TODO Auto-generated method stub
    		   
    	   }
       });	
    }

	@Override
	public void mouseClicked(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mousePressed(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mouseReleased(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mouseEntered(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public 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);
			   
	   }
	}

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章