Example #1
0
  /** 实现歌词的滚动显示 */
  public void scroll() {
    Date startTime = new Date();
    for (int i = 0; i < lrcAnalyst.getLrcTimeValAndIndex().size(); i++) {
      while (true) {
        try {
          Thread.currentThread().sleep(50);

          Date currentTime = new Date();
          LrcTimeAndIndexNum fl = (LrcTimeAndIndexNum) (lrcAnalyst.getLrcTimeValAndIndex().get(i));
          float diffTime = currentTime.getTime() - startTime.getTime();
          lrcIndex = fl.getLrcIndex() - lrcAnalyst.getRealLrcStartOffset();
          if (fl.getLrcTime() - (float) diffTime / 1000 < 0.0) {
            scrollPoint.y--;
            // System.out.println((String) lrcAnalyst.getLrcContent().get(
            //        fl.getLrcIndex()- lrcAnalyst.getRealLrcStartOffset()));
            repaint();

            break;
          }
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    }
  }
Example #2
0
  public void paintComponent(Graphics brush) {
    // 用背景色覆盖,原来的文字就看不到了。再写上新的文字,由于视觉停留,
    // 看起来文字就会滚动
    brush.setColor(getBackground());
    brush.fillRect(0, 0, getSize().width, getSize().height);

    brush.setColor(Color.blue);
    brush.setFont(fontOfChar);

    // i为下标,用来历遍歌词缓存容器,
    // 当scrollPoint.y+(heightOfChar*i)<0 时,会把文字写到面板上方,看不见。
    // 没有必要显示。
    // scrollPoint.y+(heightOfChar*i)=0 => i=(-scrollPoint.y/heightOfChar)
    // 故要使(-scrollPoint.y/heightOfChar)和 0 作比较,要是小于0,i取0
    /*int i = 0;
    if ((-scrollPoint.y / heightOfChar) > 0)
    {
        i = (-scrollPoint.y / heightOfChar);
    }*/

    /*String lyrics = null;
    for (; i < lrcAnalyst.getLrcContent().size(); i++)
    {
        // 当条件成立,文字会写到面板下方,也没有必要显示,跳出循环
        if (scrollPoint.y + (heightOfChar * i) > getSize().height)
        {
            break;
        }
        lyrics = (String) (lrcAnalyst.getLrcContent().get(i));
        // 见scroll(),靠scrollPoint.y的上移,使文字上移
        brush.drawString(lyrics, scrollPoint.x, scrollPoint.y
                 + (heightOfChar * i));
    }        */

    String lyrics = (String) lrcAnalyst.getLrcContent().get(lrcIndex);
    // 见scroll(),靠scrollPoint.y的上移,使文字上移
    brush.drawString(lyrics, scrollPoint.x, -scrollPoint.y + 20);
  }
Example #3
0
 public LrcScrollPane() {
   lrcAnalyst = new LrcAnalystBase();
   lrcAnalyst.readFile("六月的雨.lrc");
   lrcAnalyst.parseLyrics();
   scrollPoint = new Point(5, getSize().height);
 }