为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

Java MP3 player

2018-10-05 16页 doc 40KB 14阅读

用户头像

is_219945

暂无简介

举报
Java MP3 playerJava MP3 player / /包名 进口java.io.BufferedReader; 进口java.io.File; 进口java.io.FileNotFoundException; 进口java.io.FileReader; 进口java.io.IOException; 进口java.util.Iterator; 进口java.awt.BorderLayout; 进口java.awt.FileDialog; 进口java.awt.Container; 进口java.awt.GridLayout...
Java MP3 player
Java MP3 player / /包名 进口java.io.BufferedReader; 进口java.io.File; 进口java.io.FileNotFoundException; 进口java.io.FileReader; 进口java.io.IOException; 进口java.util.Iterator; 进口java.awt.BorderLayout; 进口java.awt.FileDialog; 进口java.awt.Container; 进口java.awt.GridLayout; 进口java.awt.List; 进口java.awt.TextArea; 进口java.awt.event.ActionEvent; 进口java.awt.event.ActionListener; 进口java.awt.event.MouseAdapter; 进口java.awt.event.MouseEvent; 进口java.awt.event.WindowAdapter; 进口java.awt.event.WindowEvent; 进口javax.sound.sampled.AudioFormat; 进口javax.sound.sampled.AudioInputStream; 进口javax.sound.sampled.AudioSystem; 进口javax.sound.sampled.DataLine; 进口javax.sound.sampled.SourceDataLine; 进口javax.swing。*; 公开课MusicPlayer延伸JFrame { 私有静态最终长serialVersionUID l = 1; 布尔isStop = true;/ /控制播放线程 布尔hasStop = true;/ /播放线程状态String filepath. / / play the file directory The String filename. / / play the file name AudioInputStream AudioInputStream. / / audio file flow AudioFormat AudioFormat; / / audio file format SourceDataLine SourceDataLine; / / interface: source data row, which can be written to audio data List the List; / / list JLabel labelfilepath; / / playback directory display tags JLabel labelfilename; / / playback file display tags TextArea TextArea. JMenuBar menubar; JMenu menufile; JMenuItem menuopenmany; JMenuItem menuopensong; JPanel panelmain; The Container Container; JPanel paneright; JTextField textField. JTextField lyricsJTextField; The Container container2; Static int testtimethread; TimeThread TimeThread; Public MusicPlayer () { / / set the form properties This is the new BorderLayout (). SetTitle (" music player "); This.setsize (800, 300); / / create a menu bar Menubar = new JMenuBar (); Menufile = new JMenu (" file "); Menuopenmany = new JMenuItem (" open folder "); Menuopensong = new JMenuItem (" turn on the song "); Menufile. Add (menuopenmany);menufile.add(menuopensong); menubar.add(menufile); this.setVisible(真正的); this.setJMenuBar(菜单条); menuopenmany。addActionListener(新ActionListener(){ 公共空间actionPerformed(ActionEvent e){ openlist(); } }); menuopensong。addActionListener(新ActionListener(){ 公共空间actionPerformed(ActionEvent e){ openone(); } }); / /文件列表 列表= new(); 列表。addMouseListener(新MouseAdapter(){ 公共空间mouseClicked(MouseEvent e){ / /双击时处理 如果(e.getClickCount()= = 2){ / /播放选中的文件 文件名= list.getSelectedItem(); testtimethread + +; 如果(testtimethread ! = 1){ timeThread.testrunning = false; } showlyrics(); 玩(); } } }); / /信息显示 panelmain = new JPanel(新GridLayout(2,1)); 容器= new容器(); 容器。setLayout(新GridLayout(1、2); 这一点。add(panelmain BorderLayout.NORTH); 这一点。添加(容器,BorderLayout.CENTER); labelfilepath = new JLabel(“播放目录:”); labelfilename = new JLabel(“播放文件:”); panelmain.add(labelfilepath); panelmain.add(labelfilename); textField = new JTextField(); textArea = new textArea(); textArea.enableInputMethods(假); paneright = new JPanel(); lyricsJTextField = new JTextField(); paneright。setLayout(新BorderLayout()); paneright。add(文本框,BorderLayout.NORTH); paneright。add(文本区域,BorderLayout.CENTER); paneright.add(lyricsJTextField BorderLayout.SOUTH); / / container.add(文本区域,BorderLayout.EAST); container.add(列表); container.add(paneright); / /注册窗体关闭事件 这一点。addWindowListener(新WindowAdapter(){ 公共空间windowClosing(WindowEvent e){ system . exit(0); } }); this.setVisible(真正的); } / /打开文件列表 私人空间openlist(){ FileChoose选择者= new FileChoose(); / / DIRECTORIES_ONLY就是只选目录 选择器。 setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); int r = chooser.showOpenDialog(空); 字符串aString = " \ \ "; 如果(chooser.getSelectedFile().toString()= = null){ JOptionPane。showMessageDialog(零,“未选择任何文件”); } 其他的 { .toString filepath = chooser.getSelectedFile()()+ aString; labelfilepath。setText(“播放目录:“+ filepath); / /显示文件列表 / / list.removeAll(); 文件filedir =新文件(filepath); 文件[]文件列表= filedir.listFiles(); for(int i = 0;我<文件列表。长度;我+ +){ String[]filenamelist =新的字符串(filelist.length); filenamelist[我]=文件列表(我). getname().toLowerCase(); 如果(filenamelist[我].endsWith(mp3) | | filenamelist[我].endsWith(wav)){ list.add(filenamelist[我]); } } } } / /打开单个文件 私人空间openone(){ FileDialog dialog1 = new FileDialog(这个,”选择音乐文 件”,FileDialog.LOAD); dialog1.setVisible(真正的); filepath = dialog1。getDirectory(); 字符串文件名= dialog1.getFile(); 如果(!(filename.endsWith(mp3)| | filename.endsWith(wav))){ JOptionPane。showMessageDialog(零,“文件选择错误”); system . exit(0); } 如果(filepath != null){ labelfilepath。setText(“播放目录”+ filepath); list.add(文件名); } } 私人空间showlyrics(){ char[]数组= filename.toCharArray(); int k = array.length; 而(数组(k - 1)! = '。'){ k,; } 字符串lyricsname =新的字符串(数组、0 k - 1); 尝试{ 文件lyricsfile =新文件(filepath + lyricsname +“.lrc”); FileReader FileReader = new FileReader(lyricsfile); BufferedReader BufferedReader = new BufferedReader(fileReader); timeThread = new timeThread(lyricsfile lyricsJTextField); timeThread.start(); 字符串记录; textField.setText(“开始播放:“+文件名); textArea.setText(" "); 在((记录= bufferedReader.readLine())! = null){ textArea.append(记录); textArea.append(“\ n”); } }捕捉(FileNotFoundException e){The textArea. SetText (" no lyrics "); } Catch (IOException e2) { / / TODO: handle exception E2. PrintStackTrace (); } } / / play Private void play () { Try { IsStop = true; / / stop the playing thread / / wait for the playback thread to stop While (! HasStop) { / / system.out.print (". ") Try { Thread.sleep (10); } catch (Exception e) { } } File File = new File (filepath + filename); Labelfilename.settext (" play file: "+ filename); / / get the file input stream AudioInputStream = audiosystem.getaudioinputstream (file); AudioFormat = audioinputstream.getformat (); If (audioFormat. GetEncoding ()! = audioFormat. Encoding. PCM_SIGNED) {/ / Encoding does not meet the default requirement / / define new file formats, AudioFormat = new audioFormat (audioFormat.) AudioFormat. GetSampleRate (), 16, AudioFormat. GetChannels (), AudioFormat. GetChannels () * 2, AudioFormat. GetSampleRate (), false);/ / using new file formats and audio input streams to construct new audio input streams AudioInputStream = audiosystem.getaudioinputstream (audioFormat, AudioInputStream); } / / construct data rows DataLine. Info dataLineInfo = new datale.info SourceDataLine. Class, audioFormat, AudioSystem. NOT_SPECIFIED); SourceDataLine = (sourceDataLine) audiosystem.getline (dataLineInfo); / / read the data line to the source data line SourceDataLine. Open (audioFormat); SourceDataLine. Start (); / / allow the source data line operation (I/O) to be done / / create an independent thread to play IsStop = false; Thread playThread = new playThread () PlayThread. Start (); } catch (Exception e) { E.p rintStackTrace (); / / output to standard error flow } } Public static void main (String args []) New MusicPlayer (); } / / playback thread The class PlayThread extends Thread { Byte tempBuffer [] = new byte [320] Public void run () { Try { Int CNT. HasStop = false; / / read data to cache data While (CNT = audioInputStream).Read (tempBuffer, 0, TempBuffer length))! = -1) {/ / test whether to the end of the stream If (isStop) Break; If (CNT > 0) { / / write the cached audio data to the mixer SourceDataLine. Labelfilename.settext (" play file: "+ filename); } } / / Block waits for temporary data to be output empty SourceDataLine. Drain () tapping; SourceDataLine. Close (); / / close line HasStop = true; } catch (Exception e) { E.p rintStackTrace (); System. The exit (0); } } } } / / another class Import the Java. IO. BufferedReader; Import the Java. IO. The File; Import the Java. IO. FileNotFoundException; Import the Java. IO. FileReader; Import the Java. IO. IOException; The import javax.mail. Swing. JTextField; The class TimeThread extends Thread { / / TODO auto-generated constructor stub BufferedReader reader; JTextField textField. String aString; String bString; Char [] a; Char [] b; The File File; Int delaya delayb; Boolean testrunning; Public TimeThread (File File,JTextField textField){ 这一点。文件=文件; 这一点。textField =文本框; testrunning = true; delaya = 0; 尝试{ FileReader FileReader = new FileReader(文件); 读者= new BufferedReader(fileReader); }捕捉(FileNotFoundException e){ textField.setText(“找不到歌词文件”); } / / TODO自动生成构造函数存根 } 公共空间run(){ 尝试{ (,){ aString = reader.readLine(); 一个= aString.toCharArray(); 如果(aString.length()> = 10){ 如果([0]= = '(')& &([3]= = ':')& &([9]= =)))休息; } } textField.setText(" "); 一个= aString.toCharArray(); delaya =([8],' 0 ')* 10 +([7],' 0 ')* 100 +([5],' 0 ')* 1000 +([4],' 0 ')* 10000 +([2],' 0 ')* 60000 +([1],' 0 ')* 600000; 睡眠(delaya); char[]aelse = new char[a.length-10]; for(int i = 0;我< a.length-10;+ +){ aelse[我]=(i + 10); } 字符串temp =新的字符串(aelse 0 aelse.length); textField.setText(临时); 而(testrunning&&((型= reader.readLine()))!= null){ 一个= aString.toCharArray(); delaya =([8],' 0 ')* 10 +([7],' 0 ')* 100 +([5],' 0 ')* 1000 +([4],' 0 ')* 10000 +([2],' 0 ')* 60000 +([1],' 0 ')* 600000; b = bString.toCharArray(); delayb =(b[8]-“0”)* 10 +(b[7]-“0”)* 100 +(b[5]-“0”)* 1000 +(b[4]-“0”)* 10000 +(b[2]-“0”)* 60000 +(b[1]-“0”)* 600000; 睡眠(delayb-delaya); char[]belse = new char[b.length-10]; for(int i = 0;我< b。10,我+ +){ belse[我]= b(i + 10); } 字符串temp1 =新的字符串(belse 0 belse.length); textField.setText(temp1); aString =型; } reader.close(); }捕捉(IOException e){ System.out.println(“输入输出异常”); } 抓住(InterruptedException e){ System.out.println(“线程异常中断”); } / / catch(InterruptedException e2){ / / TODO:处理异常 } / /测试是否是歌词的句子 } / /有一个类 进口javax.swing.JFileChooser; 进口javax.swing.JOptionPane; 类FileChoose延伸JFileChooser { 公共空间cancelSelection(){JOptionPane. ShowMessageDialog (null, "no files selected"); } }
/
本文档为【Java MP3 player】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索