Music Player With Desktop LRC Scolling - Java

来源:互联网 发布:华为麦芒4 4g网络设置 编辑:程序博客网 时间:2024/06/07 16:26

Music Player With Desktop LRC Scolling

Main Point:

  • Deaktop Swing
  • List Table And LRC Parse
  • Show And Playing Music

// To Get Single LRC        String sReg="(\\[\\d{2}:\\d{2}\\.\\d{2}\\])?(\\[\\d{2}:\\d{2}\\.\\d{2}\\])([^\\[\\]]+)";// Save To Linear Linked List    public void insert(long time,String lrc){        U_Node node=new U_Node(time,lrc);        while(time<=nowNode.previous.time){            nowNode=nowNode.previous;            if(time==nowNode.time){                nowNode.lrcB=lrc;                return;            }        }        node.previous=nowNode.previous;        node.previous.next=node;        node.next=nowNode;        nowNode.previous=node;        length++;        nowNode=tail;    }

Desktop Swings:

        jfParent = new JFrame();        jpMain=new JPanel();                jlLRC=new JLabel();        jlLRC.setText("If you look inside your heart");        jlLRC.setBackground(Color.black);        jlLRC.setFont(new java.awt.Font("Dialog",1,36));        jlLRC.setForeground(Color.yellow);                jpMain.add(jlLRC);        jpMain.setBackground(Color.black);        jfParent.setBackground(Color.black);        jfParent.setContentPane(jpMain);        jfParent.setBounds(iWidth/10*2,iHeight/10*8,iWidth/10*6,iHeight/10);        jfParent.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        jfParent.setUndecorated(true);    //Dismiss The Border//      jfParent.setAlwaysOnTop(true);        jfParent.setVisible(true);

LRC Parse And Save To List Table:

        if(!fLrc.exists()){            fAlert("None LRC File Found!");            return;        }        U_List uList=new U_List();        String sLrc="";        try{            sLrc=P_FileStream.fRead(fLrc);        }catch(Exception e){            fAlert("LRC File Read Error!");            return;        }        String sReg="(\\[\\d{2}:\\d{2}\\.\\d{2}\\])?(\\[\\d{2}:\\d{2}\\.\\d{2}\\])([^\\[\\]]+)";        Pattern pPat=Pattern.compile("[\r\n]");        Matcher mMar=pPat.matcher(sLrc);        pPat=Pattern.compile(sReg);        mMar=pPat.matcher(mMar.replaceAll(""));        while(mMar.find()){            try{                if(mMar.group(1)!=null)                    uList.insert(fGetLongTime(mMar.group(1)),mMar.group(3).trim());                if(mMar.group(2)!=null)                    uList.insert(fGetLongTime(mMar.group(2)),mMar.group(3).trim());                fAlert("LRC: "+mMar.group(3)+" AT: "+fGetLongTime(mMar.group(2)));            }catch(Exception e){                fAlert("Error When Reg Lrc Sentence: "+e.toString());            }        }        fAlert("Length: "+uList.length()); 

Music Player And Show LRC:

try{Runtime run=Runtime.getRuntime();run.exec("\"C:\\Program Files\\Windows Media Player\\wmplayer.exe\"");fSleep(8*1000);run.exec("\"C:\\Program Files\\Windows Media Player\\wmplayer.exe\" E:\\Whisper_Y\\Temp\\hero.mp3");}catch(Exception e){fAlert("Error When Exec CMD!");}U_Node u;long lTemp;                jlLRC.setForeground(Color.green);                jlLRC.setFont(new java.awt.Font("French Script MT",1,48));while((u=uList.getAndNext())!=null){//                        fChangeLRCStyle();           //More Colors Or Fonts Could ChangelTemp=uList.getLongTime();             // Get Sleep TimejlLRC.setText(u.lrc);fAlert("=> Settext: "+u.lrc+" Time: "+u.time+" Sleep: "+lTemp);fSleep(lTemp);}jlLRC.setFont(new java.awt.Font("Arial",1,32));jlLRC.setText("Thank You For Using *** LRC Player!");fAlert("Finished!");

List Table:

public class U_List {private int length;private U_Node nowNode;private U_Node head;private U_Node tail;public U_List(){head=new U_Node(0,"Head");tail=new U_Node(0,"Tail");head.next=tail;tail.previous=head;nowNode=tail;}public int length(){return length;}public void insert(long time,String lrc){U_Node node=new U_Node(time,lrc);while(time<=nowNode.previous.time){nowNode=nowNode.previous;if(time==nowNode.time){nowNode.lrcB=lrc;return;}}node.previous=nowNode.previous;node.previous.next=node;node.next=nowNode;nowNode.previous=node;length++;nowNode=tail;}public U_Node get(){return nowNode;}public U_Node getAndNext(){if(nowNode==tail){nowNode=head;tail.time=tail.previous.time+100;return nowNode;}nowNode=nowNode.next;if(nowNode==tail)return null;return nowNode;}public long getLongTime(){return nowNode.next.time-nowNode.time;}public U_Node getHead(){return head;}}

Node Class:

public class U_Node {public long time;public U_Node next;public U_Node previous;public String lrc="";public String lrcB="";public U_Node(long time,String lrc){this.time=time;this.lrc=lrc;}}

Final Views:

 - -  Saturday, June 20, 2015

0 0
原创粉丝点击