您的位置:首页 > 编程语言 > Java开发

Music Player With Desktop LRC Scolling - Java

2015-06-20 13:47 459 查看

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 Change
lTemp=uList.getLongTime();             // Get Sleep Time
jlLRC.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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: