2011-05-06 57 views
2

hello 我正在開發一個簡單的java音頻播放器,我需要使用jslider作爲進度條,而我在播放進度條之前使用它完成了歌曲完成之前我使用此代碼在java中計算jslider進度條

Timer time = new Timer(100, new ActionListener() { 
       int percent = 0; 

      @Override 
      public void actionPerformed(ActionEvent e) { 
        percent++; 
        if (percent>100) 
          percent = 0; 

       jSlider1.setValue((int)(100*(percent/600.0*duration))); 
      } 
    }); 
    time.start(); 
+2

爲什麼使用'JSlider'來模擬'JProgressBar'?將「MouseListener」添加到進度條,用戶可以根據需要輕鬆地重新定位軌道。 – 2011-05-06 15:08:53

+0

嘿!我也試圖創造媒體播放器 – Surej 2011-05-09 14:36:57

回答

3

首先,我不會保持percent計數器這樣。我建議您根據開始時間戳和重新計算滑塊值,當前時間戳爲

如果滑塊的最大值爲100 duration表示音頻剪輯的持續時間(毫秒),你應該能夠做到

long elapsed = System.currentTimeMillis() - startTimeStamp; 
double percent = elapsed/duration; 
jSlider1.setValue((int)(100*percent)); 
0

假設你的滑塊值的範圍從0到600,不應該是600*percent

而且不應該由百分比elapsedTime/duration來計算,例如,一首5分鐘歌曲的第一分鐘爲60/300

1

我建議讓滑塊的最大值等於軌道的持續時間(以秒爲單位),因爲它不僅使計算更容易(您只需將滑塊的位置設置爲當前的持續時間比計算出一個百分比),但是在讀取和修改滑塊位置時,您可以對時間位置進行細化控制。例如,一分鐘長的軌道將有一個帶有60個凹口的滑塊。你也會避免舍入錯誤。