天天看點

Java版本音樂播放器

  首先來一張效果圖:

Java版本音樂播放器

  代碼如下:(主要實作界面操作,掃描檔案,播放音樂功能)

package musicplayer;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.ArrayList;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.WindowConstants;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

import javazoom.jl.player.Player;

public class MusicPlayer {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		createUI();
	}

	private static void createUI() {
		// TODO Auto-generated method stub
		// 1. 建立一個頂層容器(視窗)
        final JFrame jf = new JFrame("JXD音樂播放器(JAVA版)");          // 建立視窗
        jf.setSize(500, 500);                       // 設定視窗大小
        jf.setLocationRelativeTo(null);             // 把視窗位置設定到螢幕中心
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); // 當點選視窗的關閉按鈕時退出程式(沒有這一句,程式不會退出)
        // 2. 建立中間容器(面闆容器)
        final JPanel panel = new JPanel();                // 建立面闆容器,使用預設的布局管理器
        // 3. 建立一個基本元件(按鈕),并添加到 面闆容器 中
        JButton btn = new JButton("選擇檔案");
        panel.add(btn);
        // 4. 把 面闆容器 作為視窗的内容面闆 設定到 視窗
        jf.setContentPane(panel);
        // 5. 顯示視窗,前面建立的資訊都在記憶體中,通過 jf.setVisible(true) 把記憶體中的視窗顯示在螢幕上。
        jf.setVisible(true);
        
        
        //btn的監聽點選事件
        btn.addActionListener(new ActionListener() {
			
			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				//建立一個檔案選擇器
				JFileChooser fd = new JFileChooser();
				fd.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);//檔案夾模式
		    	fd.showOpenDialog(null);
		    	File f = fd.getSelectedFile();
		    	if(f != null){
		    		//jf.dispose();//讓窗體消失
		    		
		    		final ArrayList mp3List = new ArrayList();
		    		f.listFiles(new FileFilter() {
						
						public boolean accept(File file) {
							// TODO Auto-generated method stub
							if(file.getName().endsWith(".mp3")){
								mp3List.add(file);
						//		System.out.println("歌曲名稱為:"+file.getName());
							}
							return false;
						}
					});
		    		
		    		JOptionPane.showMessageDialog(panel, "一共掃描到"+mp3List.size()+"首歌曲!", "掃描檔案夾",JOptionPane.WARNING_MESSAGE); //提示消息
		    		
		    		 DefaultListModel listModel1 =  new DefaultListModel();
		    		 for(int i=0;i<mp3List.size();i++){
		    			 File mp3File = (File) mp3List.get(i);
		    			 listModel1.addElement(mp3File.getName());
		    		 }
		    		 
		    		 JList jList1 = new JList(listModel1);
		    		
		    		 JScrollPane js = new JScrollPane(jList1);
		    		 //js.setBounds(50, 150, 800, 800);
		    		
		    		 panel.add(js);
		    		// panel.revalidate();
		    		 jf.setContentPane(panel);
		    	        // 5. 顯示視窗,前面建立的資訊都在記憶體中,通過 jf.setVisible(true) 把記憶體中的視窗顯示在螢幕上。
		    	     jf.setVisible(true);
		    	     
		    	     jList1.addListSelectionListener(new ListSelectionListener(){

						public void valueChanged(ListSelectionEvent e) {
							// TODO Auto-generated method stub
							System.out.println("============ "+e.getLastIndex()+"  "+e.getValueIsAdjusting());
							if(e.getValueIsAdjusting()){
								 FileInputStream fis;
								try {
									fis = new FileInputStream((File) mp3List.get(e.getLastIndex()));
									 BufferedInputStream stream=new BufferedInputStream(fis);
								        Player player=new Player(stream);
								        player.play();
								} catch (Exception e1) {
									// TODO Auto-generated catch block
									e1.printStackTrace();
								}
							       
						
							}
							
						}
		    	    	 
		    	     });
		    	}
			}
		});
        
        
	}

}
           

關注公衆号 随時随地檢視分享的文章哦,一起學習,一起進步

Java版本音樂播放器